我是 Pandas 和 python 的新手。
我的 DataFrame 看起来像这样:
Search query Impressions Clicks Word
0 iPhone X 2019 10000 50 iPhone
1 iPhone X 2019 10000 50 X
2 iPhone X 2019 10000 50 2019
3 iPhoneX 2019 15 64 iPhoneX
4 iPhoneX 2019 15 64 2019
5 iPhone 11 60 87 iPhone
6 iPhone 11 60 87 11
7 Nokia 3310 444 61 Nokia
8 Nokia 3310 444 61 3310
9 Nokia 3310 best phone 1 30 Nokia
10 Nokia 3310 best phone 1 30 3310
11 Nokia 3310 best phone 1 30 best
12 Nokia 3310 best phone 1 30 phone
我正在尝试编写一个函数来添加
Impressions
和 Clicks
基于 Word
柱子。比如我想知道有多少点击词
Nokia
有所以我会加起来Clicks
第 7 行和第 9 行的值。然后我想知道有多少 Clicks
当词是 Nokia
和 3310
.我试过的:
def f(column, *args):
#result = df[column].sum() where df['Word'] = args
逻辑是我将传递第一个参数来定义我要计算的列,然后定义一个或多个单词以进行计算。
谢谢你的建议。
最佳答案
这是可能的通过列表,然后按 Series.isin
过滤:
def f(column, v):
return df.loc[df['Word'].isin(v), column].sum()
print (f('Impressions', ['Nokia']))
445
print (f('Clicks', ['Nokia','3310']))
182
编辑:对于所有值的可能返回总和是可能的链由
|
倒置空列表,因为 bool([])
返回 False
:def f(column, v=[]):
return df.loc[df['Word'].isin(v) | (not bool(v)), column].sum()
print (f('Impressions', ['Nokia']))
445
print (f('Impressions'))
31042
关于python - 基于 Pandas DataFrame 中的一个或多个参数添加总和的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59560766/