python - 搜索数据帧的一个值,如果它大于参考值,则替换为另一个数据帧中的参考值
问题描述
我在 Python pandas df1 和 df2 中有两个表。
DataFrame -df1(100 条记录)。
No Customer Age City Product Limit Company Segment
1 A1 46.49 BANGALORE Gold 500000.0 C1 Self Employed
2 A2 46.49 CALCUTTA Silver 100000.0 C2 Salaried_MNC
3 A3 46.49 COCHIN Platimum 10000.0 C3 Salaried_Pvt
4 A4 46.49 BOMBAY Platimum 10001.0 C4 Govt
5 A5 46.49 BANGALORE Platimum 10002.0 C5 Normal Salary
df2(2000 条记录)
No: Customer Month Type Amount
1 A1 12-Jan-04 JEWELLERY 585470.80
2 A1 3-Jan-04 PETRO 410556.13
3 A1 15-Jan-04 CLOTHES 23740.46
4 A3 25-Jan-04 FOOD 8000.47
5 A3 17-Jan-05 CAMERA 16000.07
df1 具有唯一的客户和信用额度条目,df2 具有针对客户的多个交易记录。现在我必须针对每个客户和金额检查 df2,如果任何客户的交易金额大于 df1 的限制,则在 df2 中将其替换为 df1 的限制值。
简而言之——如果客户 A1 和 df2 中的金额大于客户 A1 在 df1 中的限制,则将 df2 中的金额值替换为 df1 中的限制值。
所需的输出是:
df3:
No: Customer Month Type Amount
1 A1 12-Jan-04 JEWELLERY 500000.00
2 A1 3-Jan-04 PETRO 410556.13
3 A1 15-Jan-04 CLOTHES 23740.46
4 A3 25-Jan-04 FOOD 8000.47
5 A3 17-Jan-05 CAMERA 10000.00
解决方案
尝试使用这个:
df3 = df2.merge(df1[['Customer','Limit']], how='left', on='Customer')
df3.loc[df3['Amount']>df3['Limit'], 'Amount'] = df3['Limit']
df3.drop('Limit', axis=1, inplace=True)
结果:
No: Customer Month Type Amount
0 1 A1 12-Jan-04 JEWELLERY 500000.00
1 2 A1 3-Jan-04 PETRO 410556.13
2 3 A1 15-Jan-04 CLOTHES 23740.46
3 4 A3 25-Jan-04 FOOD 8000.47
4 5 A3 17-Jan-05 CAMERA 10000.00
推荐阅读
- python - 在排序一个列表期间将不同列表中的相关元素保持在一起
- c# - 如何对通用列表对象进行排序
- javascript - 向和从 js 服务器发送数据的基本方法?
- json - 使用 Pyspark 处理 JSON 结构
- amazon-web-services - 为什么角色假设应该在 lambda 内部完成?
- html - 如何将数值绑定到 CSS 以创建时间线?
- docker - 如何为 docker compose 环境变量设置运行时变量
- javascript - 仅在 Javascript 中具有不同段落的动态 Div
- tsql - 表格模型中的测量列未在浏览器中显示正确的值
- javascript - 调用此函数时如何获取返回值?