我有这个人.熊猫数据帧:
df.shape
(86, 245)
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做时:
df[0, :]
Run Code Online (Sandbox Code Playgroud)
我收到错误:
*** TypeError: unhashable type
Run Code Online (Sandbox Code Playgroud)
我该如何解决?我只想得到第一排
jez*_*ael 10
如果Series只需使用第一行DataFrame.iloc:
df.iloc[0, :]
Run Code Online (Sandbox Code Playgroud)
但如果需要DataFrame使用iloc但添加[]或使用head:
df.iloc[[0], :]
df.head(1)
Run Code Online (Sandbox Code Playgroud)
样品:
df = 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 (df)
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
print (df.iloc[0, :])
A 1
B 4
C 7
D 1
E 5
F 7
Name: 0, dtype: int64
print (df.head(1))
A B C D E F
0 1 4 7 1 5 7
print (df.iloc[[0], :])
A B C D E F
0 1 4 7 1 5 7
Run Code Online (Sandbox Code Playgroud)
我TypeError: unhashable type: 'Series在尝试使用.loc函数而不是ps.Dataframe.
我的错误是使用.locas.loc(...)当它应该是.loc[...]
错误示例:
import pandas as pd
df = 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 (df)
# typical mistake
print(df.loc(
df["A"] == 1
))
Run Code Online (Sandbox Code Playgroud)
结果:
PS C:\Users\rascoussier\python\stackoverflow\type_error_with_df_loc> C:\Users\rascoussier\Anaconda3\envs\elastic-1\python.exe .\main.py
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
Traceback (most recent call last):
File "C:\Users\rascoussier\python\stackoverflow\type_error_with_df_loc\main.py", line 12, in <module>
print(df.loc(
File "C:\Users\rascoussier\Anaconda3\envs\elastic-1\lib\site-packages\pandas\core\indexing.py", line 634, in __call__
axis = self.obj._get_axis_number(axis)
File "C:\Users\rascoussier\Anaconda3\envs\elastic-1\lib\site-packages\pandas\core\generic.py", line 550, in _get_axis_number
return cls._AXIS_TO_AXIS_NUMBER[axis]
TypeError: unhashable type: 'Series'
Run Code Online (Sandbox Code Playgroud)
Pylance 在 VSCode 上未检测到此错误。我不知道为什么。但下面是更正。
import pandas as pd
df = 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 (df)
# correction
print("Correction works, see below: ")
print(df.loc[
df["A"] == 1
])
Run Code Online (Sandbox Code Playgroud)
结果:
PS C:\Users\rascoussier\python\stackoverflow\type_error_with_df_loc> C:\Users\rascoussier\Anaconda3\envs\elastic-1\python.exe .\main.py
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
Correction works, see below:
A B C D E F
0 1 4 7 1 5 7
Run Code Online (Sandbox Code Playgroud)
备注:我的示例与问题所提出的示例略有不同,但由于我在搜索时找到了此解决方案,因此它可能会帮助其他人解决相同的问题。