去掉(),改成.values
把scores.item()
改成scores.iloc[:,0].item()
你的逻辑太复杂了用argmax就能解决,目测你的scores里面只存了一列数,索引都是整数,直接用argmax(scores.values)
数据类型的问题,DataFrame的items方法和字典并不一样,返回的结构是“列名:全部值”,而且后面的values属性得到的也不是数字,而是单个元素的列表,所以代码里x的值是长度为66的所有值,当然不能比较。
最简单的解决办法,就是把DataFrame转成Series类型,再对Series使用后面的items和values等方法和属性
scores = scores['列名']
可能是因为你读入了但没有换成值的原因
for i, d in scores.iterrows():
#其中i为每行的索引号
#d为每行的数据
你可以这样遍历一下scores,然后print出i和d大概就知道该怎么弄了吧。
In [45]: import pandas as pd
In [46]: import numpy as np
In [48]: s = pd.Series(np.random.randint(1, 101, size=100))
In [52]: s.max()
Out[52]: 100
In [53]: s.min()
Out[53]: 3
In [54]: s[s<s.mean()]
Out[54]:
0 26
2 6
5 21
9 23
10 9
15 34
16 29
18 50
19 27
21 9
24 26
25 31
28 27
31 9
32 46
35 6
38 21
39 22
48 34
49 41
51 25
52 12
54 12
55 42
56 9
57 7
60 49
62 17
63 19
64 18
65 15
66 13
68 15
69 25
71 3
74 44
75 42
76 19
77 44
78 43
80 46
84 3
86 25
87 19
88 7
89 47
90 12
92 38
95 38
97 44
dtype: int32