您遇到的错误如其他答案所示,您不能将
data ['Name'] ='peter'
用作函数参数,您实际上打算使用-
np.where(data['Name']=='peter')
。
但是,鉴于您正在使用
pandas
,而且我猜测
data
是一个pandas
DataFrame
。在这种情况下,您真正想要的可以使用
DataFrame.groupby
来实现。例如-
data[data['Name']=='peter'].groupby('Item').count()
演示 -
In [7]: data[data['Name']=='peter'].groupby('Item').count()
Out[7]:
Name
Item
apple 2
banana 1
如果您希望将此内容循环打印,您可以使用 -
df = data[data['Name']=='peter'].groupby('Item').count()
for fruit,count in df['Name'].iteritems():
print('{0}\t{1}'.format(fruit,count))
示例 -
In [24]: df = data[data['Name']=='peter'].groupby('Item').count()
In [25]: for fruit,count in df['Name'].iteritems():
....: print('{0}\t{1}'.format(fruit,count))
....:
apple 2
banana 1
针对OP遇到的更新问题,他遇到了以下错误 -
TypeError: invalid type comparison
这种情况是由于在OP的真实数据中,该列具有数字值(float / int),但OP正在将值与字符串进行比较,因此出现错误。例如 -
In [30]: df
Out[30]:
0 1
0 1 2
In [31]: df[0]=='asd'
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-31-e7bacd79d320> in <module>()
----> 1 df[0]=='asd'
C:\Anaconda3\lib\site-packages\pandas\core\ops.py in wrapper(self, other, axis)
612
613
--> 614 res = na_op(values, other)
615 if np.isscalar(res):
616 raise TypeError('Could not compare %s type with Series'
C:\Anaconda3\lib\site-packages\pandas\core\ops.py in na_op(x, y)
566 result = getattr(x, name)(y)
567 if result is NotImplemented:
--> 568 raise TypeError("invalid type comparison")
569 except (AttributeError):
570 result = op(x, y)
TypeError: invalid type comparison
如果您的列是数字类型,应该与数字值进行比较,而不是字符串。
data
是什么?Pandas DataFrame? Numpy记录数组?你正在哪一行遇到错误? - Anand S Kumar