我有以下数据框:
import pandas as pd
df = pd.DataFrame({'AB': ['A1_B1_C1', 'A2_B2_C2']})
我想在分隔符
AB
的前两次出现处拆分列 _
,但只保留前两列。换句话说,输出必须是
AB A B
0 A1_B1_C1 A1 B1
1 A2_B2_C2 A2 B2
目前,我可以用
df[['A','B', 'C']]=df['AB'].str.split('_',n=2,expand=True)
df = df.drop(columns='C')
但这似乎很浪费。有什么选项可以让我不需要创建一个随后必须删除的列?
是的,您无需创建需要删除的额外列即可实现此目的。您可以使用
str.split
方法并将生成的 DataFrame 直接分配给所需的列。这是一个例子:
import pandas as pd
df = pd.DataFrame({'AB': ['A1_B1_C1', 'A2_B2_C2']})
# Split the 'AB' column and assign to new columns directly
df[['A', 'B']] = df['AB'].str.split('_', n=2, expand=True)[[0, 1]]
# Display the resulting DataFrame
print(df)
这将为您提供所需的输出:
AB A B
0 A1_B1_C1 A1 B1
1 A2_B2_C2 A2 B2
此方法直接选择
str.split
操作产生的前两列,而不为“C”创建中间列。