gpt4 book ai didi

python - DataFrame.from_dict 无法将带有元组键的字典更改为多索引数据框

转载 作者:行者123 更新时间:2023-11-28 22:14:50 26 4
gpt4 key购买 nike

我对 DataFrame.from_dict 感到很困惑。似乎 DataFrame.from_dict 在带有元组字典的字典上工作正常@_@。说真的,我已经尝试了下面的一些案例。

案例1:

dict_var1 = {('a', 'b'): [43,47], ('a', 'c'): [23,40], ('b', 'c'): [30,35], ('c', 'd'): [10,30], ('a', 'd'): [23,28]}
frame_var1 = pd.DataFrame.from_dict(dict_var1, orient='index', columns=['num', 'cnt'])
print(frame_var1.index)

结果1:

Index([('a', 'b'), ('a', 'c'), ('b', 'c'), ('c', 'd'), ('a', 'd')], dtype='object')

案例2:

dict_var2 = {('a', 'b'): {'num': 43, 'cnt': 47}, ('a', 'c'): {'num': 23, 'cnt': 40}, ('b', 'c'): {'num': 30, 'cnt': 35}, ('c', 'd'): {'num': 10, 'cnt': 30}, ('a', 'd'): {'num': 23, 'cnt': 28}}
frame_var2 = pd.DataFrame.from_dict(dict_var2, orient='index', columns=['num', 'cnt'])
print(frame_var2.index)

结果2:

MultiIndex(levels=[['a', 'b', 'c'], ['b', 'c', 'd']], labels=[[0, 0, 0, 1, 2], [0, 1, 2, 1, 2]])

问题:

当我将字典值的类型从列表更改为字典时,DataFrame.from_dict 可以将元组字典键更改为多索引权。谁能解释 DataFrame.from_dict 是如何产生这些结果的?

最佳答案

基于document

if orient == 'index':
if len(data) > 0:
# TODO speed up Series case
if isinstance(list(data.values())[0], (Series, dict)):
data = _from_nested_dict(data)
else:
data, index = list(data.values()), list(data.keys())

所以在你的情况下,第二个通过 isinstance,然后将

data = _from_nested_dict(data)

但是第一个值类型是 list ,然后

data, index = list(data.values()), list(data.keys())

关于python - DataFrame.from_dict 无法将带有元组键的字典更改为多索引数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53219207/

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