你所得到的错误是因为对方的回答表明,你不能使用data['Name'] = 'peter'
作为函数参数,你居然打算用 - np.where(data['Name'] == 'peter')
。
但是,鉴于您使用的是pandas
,而且我猜测data
是一个熊猫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 # scalars
--> 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
如果您的列是数字,则应该与数字值进行比较,而不是字符串。
错误:关键字不能表达 – aaaabbbb
什么是'data'?熊猫DataFrame? Numpy记录阵列?哪一行你得到的错误 –
我用熊猫阅读我的数据文件 – aaaabbbb