python - 根据两个条件从熊猫数据框中提取值
问题描述
我有两个数据框,df1
并且df2
df1 = A B
1 a
1
1 5
1 b
1 c
1 d
df2 = A B C
1 a apple
1 cherry
1 5 apple
1 b orange
我想基于 A 和 B 列合并这两个数据框。我的逻辑如下:
if df1['A'][0] is in df2['A'] and df1['B'][0] is in df2['B'] and they are equal:
then create new column df1['New Product'] = df2['C']
df1
如果满足此条件,我需要在其中创建第三列。
我很努力,但没有任何成功。我猜索引位置很重要。
这是我不起作用的解决方案:
df1['New Product'] = df2['C'][(df1['A'].isin(df2['A'])) & (df1['B'].isin(df2['B']))]
预期的输出应该是:
df1 = A B C
1 a apple
1 cherry
1 5 apple
1 b orange
1 c nan
1 d nan
解决方案
尝试简单的左连接,
df=pd.merge(df1,df2,on=['A','B'],how='left').rename(columns={'C':'New Product'})
输出/输出:
A B New Product
0 1 a apple
1 1 cherry
2 1 5 apple
3 1 b orange
4 1 c
5 1 d
推荐阅读
- arrays - 如何使用“reads”子句读取 Dafny 中的序列数组?
- ios - 在 SwiftUI 列表中呈现来自 Realm 的数据的正确方法是什么
- python - 尝试向 selenium 添加扩展时,我得到“参数‘self’未填充。”
- python - 如何为在 pygame 中创建的这个游戏的攻击设置动画?
- python - 定期打勾标签
- connection - IBM Integration Bus SOAP 服务调用错误
- html - 引导程序 | 同一div内的内联元素
- php - PHP如何使用公式数学模数将数组更改为字符串?
- android-studio - 如何使用 https 地址而不是 http 在 web 上运行 Flutter 应用程序:
- ios - 即使在 collectionView.reloadData 之后继续在 collectionView 中选择一个单元格