python - 通过循环熊猫使用另一个数据帧过滤一个数据帧
问题描述
我有两个数据框df1
和df2
. df1
作为跨多行具有不同值的两列。它看起来类似于以下内容:
可乐 | col_b |
---|---|
啊 | 50 |
bb | 132 |
dd | 543 |
df2
具有与以下类似的结构:
可乐 | col__b | col_x | col_y | col_z |
---|---|---|---|---|
啊 | xy | xy | xy | 2 |
啊 | xy | xy | xy | 3 |
bb | xy | xy | xy | 14 |
bb | xy | xy | xy | 9 |
bb | xy | xy | xy | 6 |
抄送 | xy | xy | xy | 0 |
抄送 | xy | xy | xy | 2 |
dd | xy | xy | xy | 0 |
dd | xy | xy | xy | 2 |
我想df2
通过循环使用值来过滤循环df1
,在循环的第一次迭代之后,我最终得到以下结果:
可乐 | col_b | col_x | col_y | col_z |
---|---|---|---|---|
啊 | xy | xy | xy | 2 |
啊 | xy | xy | xy | 3 |
在第二次迭代之后,我应该有以下内容:
可乐 | col_b | col_x | col_y | col_z |
---|---|---|---|---|
bb | xy | xy | xy | 14 |
bb | xy | xy | xy | 9 |
bb | xy | xy | xy | 6 |
我不希望过滤df2
永久修改。后续迭代应df2
根据 col_a 的值进行过滤df1
。
我不知道如何实现这一点,所以我将不胜感激。
解决方案
您可以遍历您的唯一列值,然后根据每个唯一值过滤您的 df2。如果 df1 值是唯一的,则不需要 drop_duplicates ,但我将它包括在内以防万一在这个玩具示例中:
df1 = pd.DataFrame({'col_a':['aa', 'bb']})
df2 = pd.DataFrame({'col_a':['aa', 'aa', 'bb', 'bb'], 'other column':[1, 2, 3, 4]})
for col_value in df1['col_a'].drop_duplicates():
df_temp_filtered = df2[df2['col_a'] == col_value]
在第 2 轮中得到这个 df_temp_filtered:
col_a other column
2 bb 3
3 bb 4
推荐阅读
- c++ - 为什么我需要绑定姿势矩阵的逆来计算动画?
- javascript - 在 Chart.js 中映射数据(来自 getJSON 响应)
- android - AdView 横幅在从 Intent 返回主 Activity 后随键盘更改位置
- react-native - 使用中继订阅更新程序更新连接
- c# - 私人设置但仍然可以添加
- php - 使用波斯字符导致mysql表的每个字段插入值null
- python - Shell 命令 - 延迟 stdout 日志,因为在命令执行时路径不存在
- reactjs - React hooks:可激活状态模式
- python - SQLAlchemy AmbiguousForeignKeysError
- angular - 无法将来自 Web api 的数据绑定到 Angular 中的选择选项