Pandas dataframe - 将列wrt与另一列中的值相加

时间:2016-11-30 02:31:04

标签: python pandas dataframe col

我的数据如下: -

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()

但出于某种原因,我似乎无法使用我的数据帧。

请告诉我。

感谢。

1 个答案:

答案 0 :(得分:1)

你非常接近。见下文。

>>> df[df['a'] == 1]['b'].sum()
2

不要使用.loc,而是先尝试过滤数据框(df[df['a'] == 1]),然后选择列'b',然后求和。

编辑:我将此留待此处以供将来参考,但根据您使用的pandas版本,您的解决方案工作(感谢@maxymoo)。我正在运行0.18.1并且两种方法都有效。