【问题标题】:Split list into columns in pandas将列表拆分为熊猫中的列
【发布时间】:2019-11-26 04:54:22
【问题描述】:

我有一个这样的数据框

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

【问题讨论】:

    标签: python pandas dataframe sklearn-pandas


    【解决方案1】:

    Pandas 函数很好地处理缺失值,所以使用 Series.str.join 和 Series.str.get_dummies,DataFrame.pop 用于提取列,最后 join 用于原始数据:

    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()))
    

    【讨论】:

    • 使用 Pop,不是弹出值而是弹出单个字符
    • @Hardikgupta - 对我来说工作得很好,在真实数据中是列表吗?
    • 我的真实数据就像 ['ABC', 'PWR']
    猜你喜欢
    • 2016-08-30
    • 2018-10-17
    • 2019-11-05
    • 1970-01-01
    • 2018-07-26
    • 1970-01-01
    • 1970-01-01
    • 2020-08-13
    • 1970-01-01
    相关资源
    最近更新 更多