我有一个熊猫数据框,如下所示:

A              B
US,65,AMAZON   2016
US,65,EBAY     2016

我的目标是看起来像这样:
A              B      country    code    com
US.65.AMAZON   2016   US         65      AMAZON
US.65.AMAZON   2016   US         65      EBAY

我知道以前有人问过这个问题,但都不适合我。我试过:
df['country','code','com'] = df.Field.str.split('.')


df2 = pd.DataFrame(df.Field.str.split('.').tolist(),columns = ['country','code','com','A','B'])

我遗漏了什么吗?任何帮助都非常感谢。

最佳答案

可以使用split参数> cc>,并将一个“cc>”添加到左侧:

df[['country','code','com']] = df.A.str.split(',', expand=True)

然后expand=True[]replace
df.A = df.A.str.replace(',','.')

print (df)
              A     B country code     com
0  US.65.AMAZON  2016      US   65  AMAZON
1    US.65.EBAY  2016      US   65    EBAY

如果没有,值,则使用.构造函数的另一个解决方案:
df[['country','code','com']] = pd.DataFrame([ x.split(',') for x in df['A'].tolist() ])
df.A = df.A.str.replace(',','.')
print (df)
              A     B country code     com
0  US.65.AMAZON  2016      US   65  AMAZON
1    US.65.EBAY  2016      US   65    EBAY

也可以在构造函数中使用列名,但必须DataFrame
df1=pd.DataFrame([x.split(',') for x in df['A'].tolist()],columns= ['country','code','com'])
df.A = df.A.str.replace(',','.')
df = pd.concat([df, df1], axis=1)
print (df)
              A     B country code     com
0  US.65.AMAZON  2016      US   65  AMAZON
1    US.65.EBAY  2016      US   65    EBAY

09-26 20:47
查看更多