Pandas 如何将包含破折号(-)的两列相乘?
我有两列需要相乘,但这些列包括-。在将破折号转换为浮点或替换为0之前,我可以进行乘法运算,但我不需要太多破折号。此外,当我将数据导出到excel时,由于这些破折号,我的数据将转换为字符串。我希望它们都是整数或浮点,但包括破折号。可能吗?如何在不删除破折号的情况下将这些列相乘?我认为您的想法最好是用数字替换,例如用NaN,因为对于倍数,所有数值都是必需的:Pandas 如何将包含破折号(-)的两列相乘?,pandas,Pandas,我有两列需要相乘,但这些列包括-。在将破折号转换为浮点或替换为0之前,我可以进行乘法运算,但我不需要太多破折号。此外,当我将数据导出到excel时,由于这些破折号,我的数据将转换为字符串。我希望它们都是整数或浮点,但包括破折号。可能吗?如何在不删除破折号的情况下将这些列相乘?我认为您的想法最好是用数字替换,例如用NaN,因为对于倍数,所有数值都是必需的: df = pd.DataFrame({ 'A': [15, '-', 173, 190, 68],
df = pd.DataFrame({
'A': [15, '-', 173, 190, 68],
'B': ['-', 254, '-', 16, 76],
'C': [12, '-', 110, 35, 98],
'D': [125, 89, 308, 211, 174],
'E': [19, 21, '-', 162, '-']
})
或:
如有需要,请最后返回:
或通过参数na_rep转换缺少的值:
但是可以使用try expect in函数,但速度非常慢,因此不推荐使用:
df.to_excel(file, na_rep='-')
这个问题似乎根本不包括任何解决问题的尝试。请编辑问题以显示您尝试了什么,并显示您遇到的具体障碍。有关更多信息,请参阅。
df = df.apply(pd.to_numeric, errors='coerce')
print (df)
A B C D E
0 15.0 NaN 12.0 125.0 19.0
1 NaN 254.0 NaN 89.0 21.0
2 173.0 NaN 110.0 308.0 NaN
3 190.0 16.0 35.0 211.0 162.0
4 68.0 76.0 98.0 174.0 NaN
df = df.fillna('-')
df.to_excel(file, na_rep='-')
def mult_with_dash(x):
try:
return float(x['A']) * float(x['E'])
except Exception:
return '-'
df['new'] = df.apply(mult_with_dash, axis=1)
print (df)
A B C D E new
0 15 - 12 125 19 285
1 - 254 - 89 21 -
2 173 - 110 308 - -
3 190 16 35 211 162 30780
4 68 76 98 174 - -