python - 使用 python 将一列(减法)添加到数据框中

标签 python pandas dataframe calculated-columns

我尝试在数据帧 df2 中添加一列,其中包含值 0 if(df2['P_ACT_KW'] - df2['P_SOUSCR']) < 0 else df2['P_ACT_KW']- df2['P_SOUSCR'] .

if (df2['P_ACT_KW'] - df2['P_SOUSCR']) <0:
    df2['depassement']=0
else:
    df2['depassement']= (df2['P_ACT_KW'] - df2['P_SOUSCR']) 

我收到此错误消息:

ValueError Traceback (most recent call last) in () ----> 1 if (df2['P_ACT_KW'] - df2['P_SOUSCR']) <0: 2 df2['depassement']=0 3 else: 4 df2['depassement']= (df2['P_ACT_KW'] - df2['P_SOUSCR'])

C:\Users\Demonstrator\Anaconda3\lib\site-packages\pandas\core\generic.py in nonzero(self) 890 raise ValueError("The truth value of a {0} is ambiguous. " 891 "Use a.empty, a.bool(), a.item(), a.any() or a.all()." --> 892 .format(self.class.name)) 893 894 bool = nonzero

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

请问有什么想法吗?

谢谢

最佳答案

IIUC:

df2['depassement'] = df2['P_ACT_KW'] - df2['P_SOUSCR']
df2[df2['depassement'] < 0, 'depassement'] = 0

这也应该有效:

df2['depassement'] = df2.P_ACT_KW.sub(df2.P_SOUSCR).apply(lambda x: max(x, 0))

关于python - 使用 python 将一列(减法)添加到数据框中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38638199/

相关文章:

python - 如何根据焦点设置Kivy TextInput背景颜色

python - 有没有办法让 pyPortMidi 在 Win7-64 上工作?

python - 将 pandas dataframe 列从十六进制字符串转换为 int

scala - 如何分组并连接 Dataframe Spark Scala 中的列表

python - 数据框中每周/每月的每小时平均值(移动平均值)

Python plotly : Dates in other languages

python - 通过 ffmpeg 发布时的视频色差

python - 使用 Python 创建一个简单的网页,其中模板内容是根据查询从数据库(或 pandas 数据框)填充的

python - 使用 loc 的 boolean 索引导致错误

python - 使用一列 datetime 对象设置两级索引(索引?)为 datetime.date() 和 datetime.time()