我有一个由数字字符串和/或多列中的空字符串组成的数据框,我想将这些列从字符串转换为“ int”数据类型。在此之前,我想将空字符串转换为“ -1”(int或字符串版本-1;这都没有关系)。
我试图同时将lambda函数应用于多个列以转换空字符串,但遇到错误“'系列的真值不明确。请使用a.empty,a.bool(),a。 item(),a.any()或a.all()。”,“发生在索引Temperature(F)上”'
我在下面发布了一个虚拟示例,以说明我要如何处理实际的数据框,但是它不起作用。当然,有一种变通方法是在“ for”循环中遍历每个列,但是我怀疑有一个更干净的解决方案。
df = pd.DataFrame({'Temperature(F)':['30','40',''],'Gust':['','5','10']})
numericCols = ['Temperature(F)','Gust']
df[numericCols]=fTable[numericCols].apply(lambda x:-1 if x=='' else x)
df[numericCols] = fTable[numericCols].astype('int')
'''
As described, I get the error message "'The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().', 'occurred at index Temperature(F)'" when I run this.
答案 0 :(得分:1)
在一行中不使用Apply
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