Python 数据帧替换值处于启用状态

Python 数据帧替换值处于启用状态,python,pandas,Python,Pandas,我有以下数据帧: limit1 limit2 a 123 567 b 65 0 c 123 1233 d 0987 0 e 231451 0998 我想为每一行创建一个具有下限的新框架。除非存在0,在这种情况下,取另一列中的值 期望输出: limit1 limit2 a 123 567 b 65 65 c 123 1233 d 0987 0987 e

我有以下数据帧:

    limit1  limit2 
a    123     567
b    65      0
c    123     1233
d    0987    0
e    231451  0998
我想为每一行创建一个具有下限的新框架。除非存在0,在这种情况下,取另一列中的值

期望输出:

    limit1  limit2
a    123     567
b    65      65
c    123     1233
d    0987    0987
e    231451  0998
如您所见,右侧的0被左侧相应行中的值替换

我的以下代码不起作用:

low_limit = pd.concat([limit1, limit2], join='outer', axis=1)
if limit2 == 0:
    low_limit = limit1
else:
    low_limit.min(axis=1).dropna()
错误:

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

因此,您可以执行
replace
操作,因为
min(NaN,而不是NaN值)
会输出非空值

df.limit2 = df.replace({'limit2' : {0 : np.nan}}).min(axis=1)
df
Out[46]: 
   limit1  limit2
a     123   123.0
b      65    65.0
c     123   123.0
d     987   987.0
e  231451   998.0
使用
np.where(条件,条件为真时结果,条件为假时结果)


请提供一个,以及整个错误输出。您从错误消息中了解到了什么?这是否回答了您的问题@AMC不,不是,是不是完全一样的错误?
df['limit2']=np.where(df.limit2==0,df.limit1,df.min(1))

    limit1  limit2
a     123     123
b      65      65
c     123     123
d     987     987
e  231451     998