Pandas 如何将包含破折号(-)的两列相乘?

Pandas 如何将包含破折号(-)的两列相乘?,pandas,Pandas,我有两列需要相乘,但这些列包括-。在将破折号转换为浮点或替换为0之前,我可以进行乘法运算,但我不需要太多破折号。此外,当我将数据导出到excel时,由于这些破折号,我的数据将转换为字符串。我希望它们都是整数或浮点,但包括破折号。可能吗?如何在不删除破折号的情况下将这些列相乘?我认为您的想法最好是用数字替换,例如用NaN,因为对于倍数,所有数值都是必需的: df = pd.DataFrame({ 'A': [15, '-', 173, 190, 68],

我有两列需要相乘,但这些列包括-。在将破折号转换为浮点或替换为0之前,我可以进行乘法运算,但我不需要太多破折号。此外,当我将数据导出到excel时,由于这些破折号,我的数据将转换为字符串。我希望它们都是整数或浮点,但包括破折号。可能吗?如何在不删除破折号的情况下将这些列相乘?

我认为您的想法最好是用数字替换,例如用NaN,因为对于倍数,所有数值都是必需的:

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    -      -