Jav*_*ini 1 python-3.x pandas map-function
我想逐行为两个数据帧列df1和df2建模这个excel公式:
=IF(df1 > df2; df2; df2 - df1)
Run Code Online (Sandbox Code Playgroud)
我知道这可以用Python中的map来完成,但不知道怎么做.我可以使用for循环和if-else语句来完成它,但它使我的代码更难阅读.
你能帮助我吗?
这实际上是一个工作mask或where.
df2.mask(df1 <= df2, df2 - df1)
Run Code Online (Sandbox Code Playgroud)
要么,
df2.where(df1 > df2, df2 - df1)
Run Code Online (Sandbox Code Playgroud)
更一般地说,这是来自numpy:
np.where(df1 > df2, df2, df2 - df1)
Run Code Online (Sandbox Code Playgroud)
对于这些示例DataFrames:
df1
Out:
A B C
0 0.446762 -0.435975 0.109038
1 -0.729108 3.670354 0.761667
2 -0.244370 -0.256956 -1.831161
df2
Out:
A B C
0 -1.192108 0.074628 -0.087634
1 -0.324098 0.698479 -0.287896
2 1.807863 -2.564992 -2.361296
Run Code Online (Sandbox Code Playgroud)
前两个收益率
A B C
0 -1.192108 0.510603 -0.087634
1 0.405010 0.698479 -0.287896
2 2.052233 -2.564992 -2.361296
Run Code Online (Sandbox Code Playgroud)
np.where 返回一个numpy数组,因此您可能需要将其转换回DataFrame:
array([[-1.19210755, 0.51060284, -0.08763422],
[ 0.40500973, 0.69847936, -0.28789618],
[ 2.05223294, -2.56499239, -2.36129577]])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
130 次 |
| 最近记录: |