如何将包含组合值的一个pandas数据帧列拆分为多个列

时间:2017-07-27 08:23:06

标签: python pandas dataframe

考虑我有一个像下面这样的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答案,但没有一个符合我的要求。我是大熊猫的新学习者。如果格式不正确,请随时编辑问题。

1 个答案:

答案 0 :(得分:2)

您可以join使用由str.split提取的列pop创建的ilocdfadd_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