将 DataFrame 中的 5 或 6 个字符字符串拆分为两列 3-2 或 3-3 列

Split 5 or 6 character string in DataFrame into two 3-2 or 3-3 columns

提问人:datagolfer 提问时间:10/16/2023 更新时间:10/16/2023 访问量:43

问:

我有一个列,我想拆分为两个新列......第一列是 5 或 6 个字符,当第一列是 6 个字符时,生成的列是 3-3,当第一列是 5 个字符时,结果是 3-2

下面是一个示例

12345 123 45

456789 456 789

我已经尝试了.str[3:]和.str[-2:],但这显然不知道哪个是合适的长度

Python Pandas 数据帧 切片

评论


答:

1赞 nokla 10/16/2023 #1

您可以使用:

s = "12345"
print(s[:3], s[3:])
  • s[:3]返回字符串的前 3 个字符
  • s[3:]返回从索引 3 开始的字符串

s[-2:]将始终返回最后两个字符。


例:

import pandas as pd

df = pd.DataFrame(["12345", "123456", "abcde"], columns=["Strings"])
df['start'] = df['Strings'].str[:3]
df['end'] = df['Strings'].str[3:]
print(df)

输出:

  Strings start  end
0   12345   123   45
1  123456   123  456
2   abcde   abc   de

评论

0赞 Scott Boston 10/16/2023
您可以在 .str 表示法中使用此切片:和df['Col1'].str[:3]df['Col1'].str[3:]
2赞 Panda Kim 10/16/2023 #2

import pandas as pd
s = pd.Series(['12345', '456789'])

s

0     12345
1    456789
dtype: object

法典

使用 str.extract

s.str.extract(r'(.{3})(.+)')

输出:

    0   1
0   123 45
1   456 789