将一列数据框拆分为熊猫中的新列

时间:2021-05-05 05:48:00

标签: pandas dataframe

我需要更改以下数据框,其中一列包含元组列表

df = pd.DataFrame({'columns1':list('AB'),'columns2':[1,2], 
                   'columns3':[[(122,0.5), (104, 0)], [(104, 0.6)]]})

print (df)
  columns1  columns2                columns3
0        A         1  [(122, 0.5), (104, 0)]
1        B         2            [(104, 0.6)]

到这里,其中元组的第一个元素应该是列标题

  columns1  columns2  104  122
0        A         1  0.0  0.5
1        B         2  0.6  NaN

我如何在 Jupiter notebook 中使用 panda 来做到这一点

1 个答案:

答案 0 :(得分:1)

使用列表理解将值转换为字典、对列进行排序并使用 DataFrame.join 添加到原始值:

df = pd.read_csv('Sample - Sample.csv.csv')
print (df)
  column1 column2                                            column3
0       A      U1                       [(187, 0.674), (111, 0.738)]
1       B      U2                                        [(54, 1.0)]
2       C      U3  [(169, 0.474), (107, 0.424), (88, 0.519), (57,...
                                                              
import ast

df1 = pd.DataFrame([dict(ast.literal_eval(x)) for x in df.pop('column3')], index=df.index).sort_index(axis=1)
df = df.join(df1)
print (df)
  column1 column2   54     57     64     88    107    111    169    187
0       A      U1  NaN    NaN    NaN    NaN    NaN  0.738    NaN  0.674
1       B      U2  1.0    NaN    NaN    NaN    NaN    NaN    NaN    NaN
2       C      U3  NaN  0.526  0.217  0.519  0.424    NaN  0.474    NaN