python - 将 pandas 中的列表拆分为列

标签 python pandas dataframe sklearn-pandas

我有一个像这样的数据框

df = (pd.DataFrame({'ID': ['ID1', 'ID2', 'ID3'], 
                    'Values': [['AB', 'BC'], np.NaN, ['AB', 'CD']]}))

df

    ID  Values
0   ID1 [AB, BC]
1   ID2   NaN
2   ID3 [AB, CD]

我想将列表中的项目拆分为列,以便

    ID  AB  BC  CD
0   ID1 1   1   0
1   ID2 0   0   0
2   ID3 1   0   1

最佳答案

Pandas 函数处理缺失值很好,所以使用 Series.str.joinSeries.str.get_dummies , DataFrame.pop用于提取列并最后连接到原始数据:

df = df.join(df.pop('Values').str.join('|').str.get_dummies())
print (df)
    ID  AB  BC  CD
0  ID1   1   1   0
1  ID2   0   0   0
2  ID3   1   0   1

编辑:如果值不是列表,则只有列表的字符串表示形式使用 ast.literal_eval 转换为列表:

import ast

df = (df.join(df.pop('Values')
        .apply(ast.literal_eval)
        .str.join('|')
        .str.get_dummies()))

关于python - 将 pandas 中的列表拆分为列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57074442/

相关文章:

按位置重命名数据框列

python - 读取缺少数据的表

python - Visual Studio 代码 pylint : Unable to import 'protorpc'

python ttk TreeView : how to select and set focus on a row?

python - 重命名 Pandas 聚合函数中的 header

python - 有条件地填充数据框列的所有后续值

python - Pandas 数据框根据索引和列值删除行

python - 在python中从十进制转换为十六进制

pandas - 通过分组创建虚拟变量

python - Pandas :如何将列添加到多索引数据框?