如何在具有唯一列名的Pandas Dataframe 行中扩展字典?

vwoqyblh  于 2022-11-20  发布在  其他
关注(0)|答案(3)|浏览(150)

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

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

我想扩展Col1,使 Dataframe 如下所示:

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

我怎么能用python中的panda做到这一点呢?请让我知道是否还有其他的方法。
我尝试使用pd.explode,但新的列名重复。如何避免这种情况?

qfe3c7zg

qfe3c7zg1#

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

w8rqjzmb2#

作为不需要字典键知识的泛型方法:

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
mgdq6dx1

mgdq6dx13#

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

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

结果:

A   B
0   1   23
1   3   35

然后,如果需要,可以将其添加到 Dataframe 中,如下所示:

Col1.join(df.drop(columns='Col1'),  lsuffix='_Col1')

输出量:

A_Col1 B_Col1  A       B
0    1      23      apple   carrot
1    3      35      banana  spinach

相关问题