【问题标题】:How to expand dictionaries in rows of pandas dataframe with unique column names?如何在具有唯一列名的熊猫数据框行中扩展字典?
【发布时间】:2022-11-15 08:00:20
【问题描述】:

我有一个数据框,其中的行作为字典,如下所示:

Col1                A      B
{'A': 1, 'B': 23}   apple  carrot 
{'A': 3, 'B': 35}   banana spinach

我想扩展 Col1,使数据框看起来像这样:

Col1.A Col2.B  A      B
1       23    apple  carrot
3       35    banana spinach

我怎样才能在 python 中使用 pandas 来做到这一点?请让我知道是否还有其他方法。

我尝试使用 pd.explode 但新的列名被复制了。如何避免这种情况?

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:
    df["Col1.A"] = df["Col1"].map(lambda x: x["A"])
    df["Col1.B"] = df["Col1"].map(lambda x: x["B"])
    df.drop("Col1", axis=1, inplace=True)
    

    【讨论】:

    • 无需使用map,您可以直接使用df["Col1"].str['A']
    【解决方案2】:

    作为不需要了解字典键的通用方法:

    df = (pd.json_normalize(df.pop('Col1'))
            .add_prefix('Col1.').join(df)
          )
    

    或者,如果您不想更改 df

    out = (pd.json_normalize(df['Col1'])
           .add_prefix('Col1.')
           .join(df.drop(columns='Col1'))
           )
    

    输出:

       Col1.A  Col1.B               A       B
    0       1      23           apple  carrot
    1       3      35  banana spinach    None
    

    【讨论】:

      【解决方案3】:

      要将它们转换为列,您可以使用:

      df['Col1'].apply(pd.Series)
      

      输出:

          A   B
      0   1   23
      1   3   35
      

      然后您可以将其添加到您的数据框中

      【讨论】:

        猜你喜欢
        • 2023-02-22
        • 1970-01-01
        • 1970-01-01
        • 2021-08-19
        • 2019-08-06
        • 2015-06-02
        • 2017-01-15
        • 2020-06-15
        相关资源
        最近更新 更多