从基础di的键创建数据帧行

2024-04-19 14:14:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下数据帧:

'A'  'B'  'Dict'
 a    f    {'k1': 'v1', 'k2': 'v2'}
 b    h    {}
 c    g    {'k3': 'v3'}
 …    …    …

我想要的是:

'A'  'B'  'Keys'
 a    f    k1
 a    f    k2
 c    g    k3
 …    …    …

也就是说,获取dict的键来生成新数据帧的行。dict可以是空的,也可以包含任意数量的元素

这是我现在使用的解决方案。它的工作,但似乎是相当低效和不太Python

my_list = []

for row in subset.iterrows():
  for key in row[1][2].keys():
    my_list.append((row[1][0], row[1][1], key))

new_df = pd.DataFrame(my_list)

提前感谢您的想法


Tags: 数据keyinformyk2k1v3
2条回答

您需要stack这里:

pd.DataFrame(
   df.Dict.tolist(), 
   index=pd.MultiIndex.from_arrays([df.A, df.B])
).stack().reset_index()

   A  B level_2   0
0  a  f      k1  v1
1  a  f      k2  v2
2  c  g      k3  v3

或者你可以set_index()

df.set_index(['A','B'])['Dict'].apply(pd.Series).stack().reset_index()

相关问题 更多 >