考虑我有一个像下面这样的pandas DataFrame:
df = pd.DataFrame([['Python','p1,p2,p3'],
['Java','j1,j2,j3'],
['C++','c1,c2,c3']], columns=['name','features'])
看起来像:
name features
0 Python p1,p2,p3,p4,p5
1 Java j1,j2,j3
2 C++ c1,c2,c3
我想拆分'功能'列(但只保留前3个功能,所以'p1,p2,p3,p4,p5'将成为'p1,p2,p3'),所以我的最终预期DataFrame将会是:
name feature1 feature2 feature3
0 Python p1 p2 p3
1 Java j1 j2 j3
2 C++ c1 c2 c3
我该怎么办?感谢。
我搜索了几个与拆分列相关的SO答案,但没有一个符合我的要求。我是大熊猫的新学习者。如果格式不正确,请随时编辑问题。
答案 0 :(得分:2)
您可以join
使用由str.split
提取的列pop
创建的iloc
新df
,add_prefix
只选择drop
列并最后添加{{3}}:
3
与{{3}}的解决方案相同:
df = df.join(df.pop('features').str.split(',',expand=True).iloc[:, :3].add_prefix('feature'))
print (df)
name feature0 feature1 feature2
0 Python p1 p2 p3
1 Java j1 j2 j3
2 C++ c1 c2 c3
如果需要从df = df.drop('features', axis=1).join(df['features'].str.split(',', expand=True).iloc[:, :3]
.add_prefix('feature'))
print (df)
name feature0 feature1 feature2
0 Python p1 p2 p3
1 Java j1 j2 j3
2 C++ c1 c2 c3
开始使用1
:
rename