gpt4 book ai didi

python - 将多个字典以长格式合并到一个 pandas 数据框中

转载 作者:太空宇宙 更新时间:2023-11-03 12:35:56 27 4
gpt4 key购买 nike

我有几个字典设置如下:

Dict1 = {'Orange': ['1', '2', '3', '4']}
Dict2 = {'Red': ['3', '4', '5']}

我希望输出是一个组合数据框:

| Type | Value |
|--------------|
|Orange| 1 |
|Orange| 2 |
|Orange| 3 |
|Orange| 4 |
| Red | 3 |
| Red | 4 |
| Red | 5 |

我尝试拆分所有内容,但在此数据框中我只得到 Dict2。

mydicts = [Dict1, Dict2]
for x in mydicts:
for k, v in x.items():
df = pd.DataFrame(v)
df['Type'] = k

最佳答案

一个选项是使用 pd.concat:

pd.concat(map(pd.DataFrame, mydicts), axis=1).melt().dropna()

variable value
0 Orange 1
1 Orange 2
2 Orange 3
3 Orange 4
4 Red 3
5 Red 4
6 Red 5

如果性能很重要,您可以使用 DataFrame.from_dictmelt 初始化单个 DataFrame:

pd.DataFrame.from_dict({**Dict1, **Dict2}, orient='index').T.melt().dropna()
variable value
0 Orange 1
1 Orange 2
2 Orange 3
3 Orange 4
4 Red 3
5 Red 4
6 Red 5

或者,使用 stack 而不是 melt (稍微慢一点,只是为了完整性):

res = (pd.DataFrame.from_dict({**Dict1, **Dict2}, orient='index').T
.stack()
.reset_index(level=1)
.sort_values('level_1'))
res.columns = ['Type', 'Value']

print(res)
Type Value
0 Orange 1
1 Orange 2
2 Orange 3
3 Orange 4
0 Red 3
1 Red 4
2 Red 5

字典解包语法适用于python3.6。在旧版本上,将 {**d1, **d2} 替换为 {k: v for d in mydicts for k, v in d.items()}

关于python - 将多个字典以长格式合并到一个 pandas 数据框中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53601657/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com