При обновлении столбца dataframe, FractionOfVote, моим первым шагом было добавление нового столбца, FractionOfVote, со значением NA по умолчанию.Затем проанализируйте столбец dataframe, Votes, используя split.
Работает следующий код двух функций: 1) add_new_column_fraction (), 2) add_new_column_votes ().
def add_new_column_fraction(df):
df['FractionOfVote'] = 'NA'
def add_new_column_votes(df):
df[['YesVotes','NumVotes']] = df['Votes'].str.split('/',expand=True)[[0,1]]
Код проблемы находится в функции calc_fraction_ratio_for_votes ()
def calc_fraction_ratio_for_votes(df):
for idx, row in df.iterrows():
numerator = row['YesVotes']
denomerator = row['NumVotes']
try:
row['FractionOfVote'] = float(numerator) / float(denomerator)
except ZeroDivisionError:
row['FractionOfVote'] = 'NaN'
Эта функция принимает два других столбца данных, YesVotes, NumVotes, и вычисляет новое значение с плавающей запятой для нового столбца, FractionOfVote, определенное ранее в add_new_column_fraction ().
Логическая ошибка заключается в том, что в столбце FractionOfVote сохраняется исходное обновленное значение «NA»;и никогда не получал обновление от «row ['FractionOfVote'] = float (числитель) / float (деномератор)» с вычислением значения с плавающей запятой или с «NaN» из «кроме ZeroDivisionError».