Python 将列表拆分为熊猫中的列

Python 将列表拆分为熊猫中的列,python,pandas,dataframe,sklearn-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

我有一个这样的数据帧

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函数使用缺失值nice,因此与一起使用,用于提取列和最后一个
连接到原始数据:

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\u eval
转换为列表:

import ast

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

使用Pop时,不是弹出值,而是单个值character@Hardikgupta-对我来说,工作很好,真实数据中有列表?我的真实数据就像['ABC','PWR']