Как удалить столбцы, которые имеют одинаковое имя в пандах, но сохранить столбец с максимальными значениями в нем? - PullRequest
0 голосов
/ 24 сентября 2018

У меня есть приведенный ниже кадр данных pandas, и мне нужно сохранить только один столбец даты с максимальным количеством элементов в нем и исключить остальные:

date         value_1      date        value_2    date         value_3
01-01-1990   1            01-01-1990  2          01-01-1990   4
02-01-1990   3            02-01-1990  20         
                          03-01-1990  30 

Вывод

date         value_1        value_2    value_3
01-01-1990   1              2          4
02-01-1990   3              20         
03-01-1990                  30

.T.drop_duplicates не работают.df = df.loc[:,~df.columns.duplicated()] сохраняет первый столбец даты

1 Ответ

0 голосов
/ 24 сентября 2018

Использование:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...