我的数据如下: -
data = {"doc1" : {'a': 2 , 'b': 1,'c':3}, "doc2" : {'a': 1 , 'b': 1,'c':3}, "doc3" : {'a': 1 , 'b': 1,'c':3}}
我将其转换为数据框: -
df = pd.DataFrame.from_dict(data,orient='index')
Dataframe如下所示: -
a c b
doc1 2 3 1
doc2 1 3 1
doc3 1 3 1
现在我想总结列b中列a值为1的所有值。
所以我想要的价值是2。
有没有一种简单的方法可以做到这一点,而不是遍历两个列? 我检查了其他帖子,发现this: -
这使用.loc函数。
df.loc[df['a'] == 1, 'b'].sum()
但出于某种原因,我似乎无法使用我的数据帧。
请告诉我。
感谢。
答案 0 :(得分:1)
你非常接近。见下文。
>>> df[df['a'] == 1]['b'].sum()
2
不要使用.loc
,而是先尝试过滤数据框(df[df['a'] == 1]
),然后选择列'b'
,然后求和。
编辑:我将此留待此处以供将来参考,但根据您使用的pandas版本,您的解决方案应工作(感谢@maxymoo)。我正在运行0.18.1
并且两种方法都有效。