我有这个数据框:
test = pd.DataFrame([{'a': 'b,c,d'},{'a': 'c,d'},{'a': 'd,c,d'}])
test
a
0 b,c,d
1 c,d
2 d,c,d
我想扩展专栏' a'分为三个不同的新栏目。
我知道如何使用此命令执行此操作:
test[['Column1', 'Column2','Column3']] = test['a'].str.split(',', expand=True)
a Column1 Column2 Column3
0 b,c,d b c d
1 c,d c d None
2 d,c,d d c d
但是,我对使用pandas.assign函数的解决方案感兴趣。
我尝试了这个,但我只恢复了第一列。
test = test.assign(a = lambda x: x['a'].str.split(',', expand = True))
test
a
0 b
1 c
2 d
我该怎么做?
答案 0 :(得分:1)
如果您确实想使用assign
test.assign(**{str(k): v for k,v in (test['a'].str.split(',', expand=True).to_dict('l')).items()})
Out[898]:
a 0 1 2
0 b,c,d b c d
1 c,d c d None
2 d,c,d d c d
答案 1 :(得分:0)
如果你必须使用assign,你可以这样做:
df.assign(**dict(zip(['Column1','Column2','Column3'],
df.a.str.split(',',expand=True).values.T)))
Out[19]:
a Column1 Column2 Column3
0 b,c,d b c d
1 c,d c d None
2 d,c,d d c d