Я новичок в pandas и пытаюсь заменить значение столбца (NaN) в df1 на df2 со значением столбца. И перед следующей ошибкой.
df1
unique_col | Measure
944537 NaN
7811403 NaN
8901242114307 1
df2
unique_col | Measure
944537 18
7811403 12
8901242114307 17.5
df1.loc[(df1.unique_col.isin(df2.unique_col) &
df1.Measure.isnull()), ['Measure']] = df2[['Measure']]
У меня есть два блока данных с 3 миллионами записей и при выполнении ниже операции, столкнувшись со следующей ошибкой:
ValueError: не может переиндексироваться с дублирующей оси
Вы можете легко заполнить nans - использовать функцию fillna
. В вашем случае, если у вас есть dfs as (обратите внимание на индексы)
unique_col Measure
0 944537 NaN
1 7811403 NaN
2 8901242114307 1.0
unique_col Measure
0 944537 18.0
1 7811403 12.0
2 8901242114307 17.5
Вы можете просто
>>> df.fillna(df2)
unique_col Measure
0 944537 18.0
1 7811403 12.0
2 8901242114307 1.0
Если индексы не совпадают с указанными выше, вы можете установить их одинаковыми и использовать одну и ту же функцию
df = df.set_index('unique_col')
df.fillna(df2.set_index('unique_col'))