Python 如何将带有if语句的函数同时应用于多个dataframe列

Python 如何将带有if语句的函数同时应用于多个dataframe列,python,pandas,dataframe,lambda,Python,Pandas,Dataframe,Lambda,我有一个数据框架,由多列中的数字字符串和/或空字符串组成,我想将这些列从字符串转换为“int”数据类型。在此之前,我希望将空字符串转换为“-1”(int或-1的字符串版本;这无关紧要) 我试图同时对多个列应用lambda函数来转换空字符串,但得到一个错误“'序列的真值不明确。请使用a.empty、a.bool()、a.item()、a.any()或a.all()。','在索引温度(F)下发生' 我在下面发布了一个虚拟示例,说明我试图用我的实际数据帧做什么,但它不起作用。当然,在“for”循环中迭

我有一个数据框架,由多列中的数字字符串和/或空字符串组成,我想将这些列从字符串转换为“int”数据类型。在此之前,我希望将空字符串转换为“-1”(int或-1的字符串版本;这无关紧要)

我试图同时对多个列应用lambda函数来转换空字符串,但得到一个错误“'序列的真值不明确。请使用a.empty、a.bool()、a.item()、a.any()或a.all()。','在索引温度(F)下发生'

我在下面发布了一个虚拟示例,说明我试图用我的实际数据帧做什么,但它不起作用。当然,在“for”循环中迭代每一列有一个解决方法,但我怀疑有一个更干净的解决方案

df=pd.DataFrame({'Temperature(F)':['30','40','','Gust':['','5','10']))
numericCols=[‘温度(F)’,‘阵风’]
df[numericCols]=fTable[numericCols]。应用(λx:-1,如果x=='',则为x)
df[numericCols]=fTable[numericCols].astype('int')
'''
如前所述,我在运行此操作时收到错误消息“'序列的真值不明确。请使用a.empty、a.bool()、a.item()、a.any()或a.all(),'在索引温度(F)下发生'”。

在一行中不使用应用

df[numericCols].apply(pd.to_numeric, errors='coerce').fillna(value=-1)
# Out:
#    Temperature(F)  Gust
# 0            30.0  -1.0
# 1            40.0   5.0
# 2            -1.0  10.0