Я пытаюсь добавить два столбца вместе, которые имеют nans
и строки. Я также пытаюсь использовать больше векторизации.
Это не проблема, но мой метод выглядит немного грязно.
Мне просто не нравится внешний вид try except
. Это единственный способ избежать ошибок при добавлении strings
, ints
и nans
вместе. Это нормально использовать try, кроме как таким образом, или есть более питонический способ? Может ли это замедлить мою векторизацию?
Вот оно:
import pandas as pd
d = pd.DataFrame({'col1':[1,2,3,'string',4,pd.np.nan],
'col2':['string2',4,5,pd.np.nan,6,8]})
print(d)
col1 col2
0 1 string2
1 2 4
2 3 5
3 string NaN
4 4 6
5 NaN 8
Функция добавления строк:
def addition(col1,col2):
sums = []
for num1, num2 in zip(col1,col2):
try:
sums.append(int(num1)+int(num2))
except:
sums.append(pd.np.nan)
return sums
d['col3'] = addition(d.col1,d.col2)
И я получил ожидаемый результат:
col1 col2 col3
0 1 string2 NaN
1 2 4 6.0
2 3 5 8.0
3 string NaN NaN
4 4 6 10.0
5 NaN 8 NaN
Мой вопрос: это нормально использовать try except
, как это? Есть ли менее noob
способ избежать ошибок?