微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – Pandas基于拆分另一列添加新列

我有一个像下面这样的pandas数据帧:

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

我知道在herehere之前已经问过这个问题,但它们都不适合我.我试过了:

df['country','code','com'] = df.Field.str.split('.')

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

我错过了什么吗?任何帮助深表感谢.

解决方法:

您可以使用参数expand = True的split并在左侧添加一个[]:

df[['country','code','com']] = df.A.str.split(',', 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

如果没有NaN值,则使用DataFrame构造函数的另一个解决方案:

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

您也可以在构造函数中使用列名,但是必须使用concat

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐