TypeError:不可散列的类型:使用熊猫多索引时为“ dict”

乔维奇

我试图将一个具有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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

设置为dict Python

TypeError:不可散列的类型:'dict',当dict用作另一个dict的键时

熊猫to_dict使用outtype ='records'更改索引类型

不可散列的类型:在对熊猫应用函数时使用“ dict”?

TypeError:使用dict()时无法调用'dict'对象

熊猫比赛dict'else'

Python TypeError:无法散列的类型:'dict'

pandas.DataFrame.drop_duplicates(inplace = True)抛出'TypeError:无法散列的类型:'dict'

熊猫列的列表理解结果:无法散列的类型:“ dict”

TypeError:不可散列的类型:Networkx随机游走代码中以前起作用的“ dict”

使用熊猫to_dict时排除NaN

在elasticsearch中进行批量上传时,获取`TypeError:无法散列的类型:'dict'

Gremlin Python:不可散列的类型:在边缘使用groupCount时使用“ dict”

熊猫合并错误“无法散列的类型:dict”的解决方法

Python快取:TypeError:无法散列的类型:'dict'

计算列表差异时,如何避免出现“ TypeError:无法散列的类型:'dict'”?

使用内置的dict()从元组列表生成dict

分页不接受dict作为数据-不可散列的类型

熊猫groupby与dict

从API提取数据会产生TypeError:无法散列的类型:'dict'

无法散列的类型:“ dict”类型错误

属性为dict类型时,@ property可写

类型错误:不可散列类型:'dict',将内联 for 循环输出写入 JSON 文件时

cherrypy + sqlalchemy + sqlalchemy-datatables:不可散列类型:dict

Python SET 到 DICT 导致不可散列的类型:'set'

错误:不可散列的类型:'dict' with @dataclass

max(dict, dict.get) 当 dict 项是 NamedTuple 对象时

Python 类型列表[Dict] 与列表[dict]

计数器抛出错误:TypeError:不可散列的类型:'dict'