gpt4 book ai didi

python - 类型错误 : unhashable type: 'dict' when using pandas Multi Index

转载 作者:行者123 更新时间:2023-11-28 17:18:10 26 4
gpt4 key购买 nike

我试图将一个有 2 行和大约 200 列的数据帧添加到另一个数据帧的顶部,但我得到了 TypeError: unhashable type: 'dict' 。这是我正在使用的代码:df 是第一个包含 2 行和大约 200 列的数据框,我试图将其添加到 finaldata 数据框。

finaldata.columns = pd.MultiIndex.from_arrays([df.values[0], finaldata.columns]) 

当我使用 type() 检查数据帧的类型时,我得到了 pandas.core.frame.DataFrame

最佳答案

看来你需要iloc按位置选择 df 的第一行和第二行:

finaldata.columns = pd.MultiIndex.from_arrays([df.iloc[0], df.iloc[1], finaldata.columns]) 

示例:

df = pd.DataFrame({'a':[2,3],
'b':[5,6],
'c':[1,5],
'd':[4,5],
'e':[1,5],
'f':[8,9]})

print (df)
a b c d e f
0 2 5 1 4 1 8
1 3 6 5 5 5 9

finaldata = pd.DataFrame({'A':[1,2,3],
'B':[4,5,6],
'C':[7,8,9],
'D':[1,3,5],
'E':[5,3,6],
'F':[7,4,3]})

print (finaldata)
A B C D E F
0 1 4 7 1 5 7
1 2 5 8 3 3 4
2 3 6 9 5 6 3

names = ['first','second','third']
finaldata.columns = pd.MultiIndex.from_arrays([df.iloc[0],
df.iloc[1],
finaldata.columns], names=names)
print (finaldata)
first 2 5 1 4 1 8
second 3 6 5 5 5 9
third A B C D E F
0 1 4 7 1 5 7
1 2 5 8 3 3 4
2 3 6 9 5 6 3

另一种解决方案 numpy.concatenate :

a = np.concatenate([df.values, np.array(finaldata.columns).reshape(-1,df.shape[1])]).tolist()
print (a)
[[2, 5, 1, 4, 1, 8], [3, 6, 5, 5, 5, 9], ['A', 'B', 'C', 'D', 'E', 'F']]

names = ['first','second','third']
finaldata.columns = pd.MultiIndex.from_arrays(a, names=names)
print (finaldata)
first 2 5 1 4 1 8
second 3 6 5 5 5 9
third A B C D E F
0 1 4 7 1 5 7
1 2 5 8 3 3 4
2 3 6 9 5 6 3

编辑:

解决方案很相似,只需要reindex列:

df = pd.DataFrame({'A':[2,3],
'B':[5,6],
'C':[1,5],
'D':[4,5],
'E':[1,5],
'F':[8,9]})

print (df)
A B C D E F
0 2 5 1 4 1 8
1 3 6 5 5 5 9

finaldata = pd.DataFrame({'A':[1,2,3],
'B':[4,5,6],
'E':[7,8,9],
'F':[1,3,5]})

print (finaldata)
A B E F
0 1 4 7 1
1 2 5 8 3
2 3 6 9 5

df1 = df.reindex(columns=finaldata.columns)
print (df1)
A B E F
0 2 5 1 8
1 3 6 5 9

names = ['first','second','third']
finaldata.columns = pd.MultiIndex.from_arrays([df1.iloc[0],
df1.iloc[1],
finaldata.columns], names=names)
print (finaldata)
first 2 5 1 8
second 3 6 5 9
third A B E F
0 1 4 7 1
1 2 5 8 3
2 3 6 9 5

关于python - 类型错误 : unhashable type: 'dict' when using pandas Multi Index,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43041681/

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