我有一个数据框
graph 0 1 2 3 4
1 blue blue blue blue blue
2 blue blue blue blue blue
3 blue red blue blue red
4 red blue red red blue
5 red red blue red red
6 blue blue blue blue blue
我需要得到每个字符串/行的值'blue'的计数 所需的输出:
graph result
1 5
2 5
3 3
4 2
5 1
6 5
我尝试用
做(df['0', '1', '2', '3', '4']).applymap(lambda x: str.count(x, 'blue'))
但它返回
KeyError: ('0', '1', '2', '3', '4')
答案 0 :(得分:3)
In [35]: df.set_index('graph').eq('blue').sum(1).reset_index(name='result')
Out[35]:
graph result
0 1 5
1 2 5
2 3 3
3 4 2
4 5 1
5 6 5
答案 1 :(得分:1)
弯曲numpy
。如果您可靠地知道graph
列的位置,即列0
,则从头开始重建。
v = df.values
pd.DataFrame(dict(graph=v[:, 0], result=(df.values[:, 1:] == 'blue').sum(1)))
graph result
0 1 5
1 2 5
2 3 3
3 4 2
4 5 1
5 6 5
答案 2 :(得分:1)
等于等于数据帧和其他按元素计算(二进制运算符eq)。
比较操作符之间有灵活的包装器(eq
,ne
,le
,lt
,ge
,gt
)。
等效于==,= !、 <=,<,> =,>,并支持选择轴(行或列)和级别进行比较。
不仅用于数字。
希望此信息对您有帮助