我想做这样的事情:
df['A'] = max(0, min(df.B, df.C - df.D))
Run Code Online (Sandbox Code Playgroud)
但是,我得到一个ValueError(“系列的真值不明确”),我猜这意味着 和max函数min正在幕后执行一些布尔运算,并且这不会分布在系列上。我知道您可以通过例如获得某些列集的最小/最大
df[['col1','col2','col3']].max(axis = 1)
Run Code Online (Sandbox Code Playgroud)
因此我应该能够通过创建一些具有中间值的临时列来获得我想要的输出,但我想要一个直接执行此操作的干净解决方案。如何在无需为一次性中间值创建额外列的情况下做到这一点?
max和min是内置的 Python 函数。它们不是为 Pandas / NumPy 附带的矢量化功能而设计的。
相反,您可以使用np.maximum/np.minimum执行逐元素计算:
import numpy as np
df['A'] = np.maximum(0, np.minimum(df['B'], df['C'] - df['D']))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2429 次 |
| 最近记录: |