вы можете попробовать это (Вот пример):
import pandas as pd
import numpy as np
data = {'label': [True, False, True, True, False],
'A': [2012, 2012, 2013, 2014, 2014],
'B': [4, 24, 31, 21, 3],
'C': [25, 94, 57, 62, 70],
'D': [3645, 0, 27, 24, 96]}
df = pd.DataFrame(data)
Вы можете применить свои изменения непосредственно к вашему основному Dataframe без необходимости повторять каждый ряд каждый раз, как это:
# select only rows with label == True and apply the division function
df.loc[df.label == True, 'A'] = df['B']/df['C']
df.loc[df.label == False, 'A'] = df['B']
df.loc[np.logical_and(df.label == False, df.D == 0), 'C'] = 0
.
.
.
Вы можете каждый раз выбирать строку, которую хотите изменить, и применять изменения непосредственно.Как и я.
Еще один момент: после применения деления в моем примере целые числа преобразуются в float64, вы можете попробовать на своем примере функцию series.astype('flat64')
для row['A'] = 1232455 / 26719856
.получить 0.046125
, а не только целую часть 0
.
Возможно, это избавит вас от появления нулей каждый раз, когда вы будете делить