python - 如何创建一个包含列表中最大值的新列,该列表小于现有列中的单元格值?
问题描述
我有一个看起来像的熊猫数据框:
a
0 0
1 -2
2 4
3 1
4 6
我也有清单
A = [-1, 2, 5, 7]
我想添加一个名为“b”的新列,其中包含 A 中小于“a”列中单元格值的最大值。如果不存在这样的值,我希望“b”中的值为“X”。因此,目标是获得:
a b
0 0 -1
1 -2 X
2 4 2
3 1 -1
4 6 5
我如何实现这一目标?
解决方案
有一个内置函数merge_asof
s=pd.DataFrame({'a':A,'b':A})
pd.merge_asof(df.assign(index=df.index).sort_values('a'),s,on='a').set_index('index').sort_index().fillna('X')
Out[284]:
a b
index
0 0 -1
1 -2 X
2 4 2
3 1 -1
4 6 5
推荐阅读
- javascript - iOS-redux 更新不起作用在 android 中工作正常
- javascript - 使用 es6-arrow 函数语法检查数组中是否有两个项目的总和等于给定值
- azure - 如何通过 azure ad 将移动应用程序(离子/角度)连接到动态 crm
- android - 不同 SDK 和风格的不同依赖项
- c# - 将 json 反序列化为对象 json.net
- google-cloud-pubsub - 谷歌云发布订阅没有收到推送通知到我的端点
- pandas - 将数据框值与索引天数相乘
- python - 如何根据其他列的类别更改具有不同百分比值的列的值
- javascript - 将渐变 bgs 交换到主 div 以进行编辑
- openstack - 中子错误:oslo_privsep.daemon.FailedToDropPrivileges:privsep helper 命令退出非零(1