Yay*_*Yay 3 python dataframe pandas
我有一个pandas数据框,看起来像:
a
0 0
1 -2
2 4
3 1
4 6
Run Code Online (Sandbox Code Playgroud)
我也有一份清单
A = [-1, 2, 5, 7]
Run Code Online (Sandbox Code Playgroud)
我想添加一个名为"b"的新列,其中包含A中最大的值,该值小于"a"列中的单元格值.如果不存在这样的值,我希望'b'中的值为'X'.所以,目标是获得:
a b
0 0 -1
1 -2 X
2 4 2
3 1 -1
4 6 5
Run Code Online (Sandbox Code Playgroud)
我该如何实现这一目标?
有一个内置功能 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
66 次 |
| 最近记录: |