我有一个有两列的数据帧。我想创建第三列,如果Col1为null,那么Col3=Col2,否则Col3=Col1*2
我试过:
def myf(col1,col2):
if pd.isnull(col1):
return col2
else:
return col1 * 2
df['col3'] = df.apply(lambda x: myf(df['col1'], df['col2']), axis= 1)
但是我得到了一个错误“级数的真值是模糊的”
我怎样才能解决这个问题? 我知道这是一个老生常谈的问题,但我那小小的,习惯了SQL的大脑仍然在挣扎(大时刻!)了解熊猫是如何工作的;也许我很笨,也许熊猫的资料很差,也许两者都有:)
我知道apply在数据帧的行/列基础上工作,applymap在数据帧上按元素工作,map在序列上按元素工作,我知道错误是因为pd.isnull返回一个T/F数组
但是,我不确定在这样的情况下如何使用applymap或map,其中另外两列是我的输入
谢谢
需要在
lambda function
中将df
更改为x
而不是Series
作为函数中的输入:另一个更快的解决方案是使用^{} 或^{} :
您可以使用^{} :
相关问题 更多 >
编程相关推荐