Использование:
df1 = df.loc[:,df.columns.duplicated(keep=False)]
idx = np.argmax(df1.count().values)
df = df.loc[:,~df.columns.duplicated()].assign(date=df1.iloc[:, idx])
print (df)
date value_1 value_2 value_3
0 01-01-1990 1.0 2 4.0
1 02-01-1990 3.0 20 NaN
2 03-01-1990 NaN 30 NaN
Подробности :
Дублирован первый фильтр date
столбцы:
df1 = df['date']
print (df1)
date date date
0 01-01-1990 01-01-1990 01-01-1990
1 02-01-1990 02-01-1990 NaN
2 NaN 03-01-1990 NaN
Получить количество не NaNзначения DataFrame.count
:
print (df1.count())
date 2
date 3
date 1
dtype: int64
Имена столбцов одинаковы, поэтому используйте np.argmax
для позиции:
print (df1.count().values)
[2 3 1]
idx = np.argmax(df1.count().values)
print (idx)
1
Ипоследний выбор iloc
:
print (df1.iloc[:, idx])
0 01-01-1990
1 02-01-1990
2 03-01-1990
Name: date, dtype: object