Pandas dataframe - 将一列与另一列中的值相加
Pandas dataframe - Sum a column wrt to values in another column
我有一个看起来像这样的数据:-
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')
数据框看起来像这样:-
a c b
doc1 2 3 1
doc2 1 3 1
doc3 1 3 1
现在我想对 b 列中的所有值求和,其中 a 列的值为 1。
所以我想要的值将是 2。
有没有一种简单的方法可以做到这一点而不是遍历两列?
我查看了其他帖子,发现 :-
这利用了 .loc 函数。
df.loc[df['a'] == 1, 'b'].sum()
但出于某种原因,我似乎无法使用我的数据框。
请告诉我。
谢谢。
你们很亲近。见下文。
>>> df[df['a'] == 1]['b'].sum()
2
而不是使用 .loc
,尝试先过滤数据帧 (df[df['a'] == 1]
),然后选择列 'b'
,然后求和。
编辑:我会把它留在这里以供将来参考,尽管根据您使用的 pandas 版本,您的解决方案 应该 有效(谢谢, @maxymoo)。我是 运行 0.18.1
,两种方法都有效。
我有一个看起来像这样的数据:-
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')
数据框看起来像这样:-
a c b
doc1 2 3 1
doc2 1 3 1
doc3 1 3 1
现在我想对 b 列中的所有值求和,其中 a 列的值为 1。
所以我想要的值将是 2。
有没有一种简单的方法可以做到这一点而不是遍历两列?
我查看了其他帖子,发现
这利用了 .loc 函数。
df.loc[df['a'] == 1, 'b'].sum()
但出于某种原因,我似乎无法使用我的数据框。
请告诉我。
谢谢。
你们很亲近。见下文。
>>> df[df['a'] == 1]['b'].sum()
2
而不是使用 .loc
,尝试先过滤数据帧 (df[df['a'] == 1]
),然后选择列 'b'
,然后求和。
编辑:我会把它留在这里以供将来参考,尽管根据您使用的 pandas 版本,您的解决方案 应该 有效(谢谢, @maxymoo)。我是 运行 0.18.1
,两种方法都有效。