У меня есть датафрейм Pandas 0.24.2 для Python 3.7x, как показано ниже. Я хочу drop_duplicates()
с тем же именем на основе условной логики. Подобный вопрос можно найти здесь: Панды - условные дубликаты отбрасывания , но в моем случае это усложняется
import pandas as pd
import numpy as np
df = pd.DataFrame({
'Id': [1, 2, 3, 4, 5, 6 ],
'Name': ['A', 'B', 'C', 'A', 'B', 'C' ],
'Value1':[1, np.NaN, 0, np.NaN, 1, np.NaN],
'Value2':[np.NaN, 0, np.NaN, 1, np.NaN, 0 ],
'Value3':[np.NaN, 0, np.NaN, 1, np.NaN, np.NaN]
})
Как можно:
Удалите дубликаты для тех же записей «Имя», сохраняя тот, у которого меньше NaN?
Если у них одинаковое количество NaN, сохраните тот, у которого НЕ есть NaNin 'Value1'?
Желаемый результат будет:
Id Name Value1 Value2 Value3
2 2 B NaN 0 0
3 3 C 0 NaN NaN
4 4 A NaN 1 1