python - Python Pandas - 按多个列名过滤
问题描述
抱歉,我查看了许多其他 StackOverflow 线程,但没有找到我正在寻找的线程。
我正在尝试使用 pandas 来解决这个问题,但我不一定需要 pandas 解决方案。我创建了一个熊猫数据框:
df = pd.DataFrame({'Provider' : ['Prov1', 'Prov1', 'Prov1', 'Prov1', 'Prov2', 'Prov2', 'Prov2'],
'Field' : ['Chemistry', 'Biology', 'Chemistry', 'Biology', 'Biology', 'Engineering', 'Biology'],
'Downloads' : [10, 12, 10, 8, 4, 20, 14]})
我想要做的基本上是按多列过滤。这个的伪代码是:
#if provider = 'Prov1':
#for field in provider:
#sum downloads for these criteria
理想情况下,我的输出将是一个元组,例如(Chemistry, 20), (Biology, 20)
.
我尝试过使用 pandas.loc、pandas.groupby 的各种方法,但这些方法似乎都允许一级过滤。意思是,我可以选择一列作为过滤依据。但我不知道如何按多个级别进行过滤。
解决方案
您可以使用 filterdf[df['Provider']=='Prov1']
后跟groupby
and sum
:
result = df[df['Provider']=='Prov1'].groupby('Field', as_index=False).sum().values.tolist()
结果是列表列表:
[['Biology', 20], ['Chemistry', 20]]
推荐阅读
- unit-testing - 在 Visual Studio Code 编辑器中完全禁用 Jest 测试运行器的自动运行
- html - 背景颜色不适用
- python - 将 Excel 文件转换为 CSV 并进行一些更改
- python - 使用 xpath 提取值会产生一些不需要的字符串
- reactjs - 反应路由器 dom 重定向问题。更改 url,不渲染组件
- python - 从 pandas 数据帧构造一个二维数组
- python - pyinstaller 因权限错误而失败 [Err-13]
- javascript - Bootstrap Datepicker 在使用 javascript 进行动态元素追加时不起作用
- java - 通过 Python 执行外部软件
- python - 以未指定格式处理 url 流的音频