【问题标题】:How can I unnest the "dictionary like" values of one column in pandas?如何取消嵌套熊猫中一列的“字典式”值?
【发布时间】:2021-08-17 17:34:46
【问题描述】:

因此,在运行从网站收集数据的脚本后,我最终得到了一个与下面的完全一样的 pandas 数据框:

id date list
1 2021-05-01 {'date': '2021-05-01', 'data_usage': '200mb', 'device_name': 'iphone'}
1 2021-05-02 {'date': '2021-05-02', 'data_usage': '900mb', 'device_name': 'iphone'}
3 2021-05-01 {'date': '2021-05-01', 'data_usage': '1gb', 'device_name': 'android'}
3 2021-05-02 {'date': '2021-05-02', 'data_usage': '2gb', 'device_name': 'android'}

但是,我需要取消嵌套 'list' 列,因此 'data_usage' 和 'device_name' 都将成为列。我怎样才能做到这一点?顺便说一下,此列上没有“null”或空值。

谢谢!

【问题讨论】:

  • df["list"].apply(pd.Series)
  • 当我创建一个像 df2 = df["list"].apply(pd.Series) 这样的新数据框时,它工作得很好。但是我怎样才能做到这一点并将这些新列添加到原始数据框中?
  • 我设法修复它: df2 = df_completa["list"].apply(pd.Series) df = pd.concat([df, df2], keys=['start_date', 'date '], 轴=1)

标签: python pandas dataframe


【解决方案1】:

一行...

试试:

pd.concat([df.drop(['list', 'date'], axis=1), df['list'].map(eval).apply(pd.Series)], axis=1)

输出:

    id  date        data_usage   device_name
0   1   2021-05-01  200mb        iphone
1   1   2021-05-02  900mb        iphone
2   3   2021-05-01  1gb          android
3   3   2021-05-02  2gb          android

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-11
    • 2019-03-12
    • 2018-08-13
    • 2018-06-20
    • 2017-06-16
    • 1970-01-01
    • 2020-05-23
    相关资源
    最近更新 更多