drop_duplicates() перестал работать в пандах Python
Этот код ранее работал в Python 3 для удаления повторяющихся значений, но сохранял первое вхождение во всем фрейме данных. После возвращения к моему сценарию это больше не удаляет дубликаты в фрейме данных pandas.
df = df.apply(lambda x: x.drop_duplicates(), axis=1)
так что если у меня есть
a b c
0 1 2
3 4 0
0 8 9
10 0 11
Я хочу получить в качестве вывода
a b c
0 1 2
3 4
8 9
10 11
Я не против, если бланки возвращаются как "ня"
Я также попробовал следующее
df.drop_duplicates(subset = None, keep='first')
а также
df.drop_duplicates(subset = None, keep='first', inplace =True)
Любые советы / альтернативы будут приветствоваться!
3 ответа
Решение
После того, как вы приложили данные, я думаю, что вы можете использовать duplicated
newdf=df[~df.stack().duplicated().unstack()]
newdf
Out[131]:
a b c
0 0.0 1.0 2.0
1 3.0 4.0 NaN
2 NaN 8.0 9.0
3 10.0 NaN 11.0
Если вы хотите сбросить повторяющиеся значения вдоль строк, вы хотите использовать axis = 0
вместо
df = pd.DataFrame({'a':[3,3,4,4], 'b':[2,2,4,5]})
print(df)
a b
0 3 2
1 3 2
2 4 4
3 4 5
df.apply(lambda x: x.drop_duplicates(), axis=0)
a b
0 3.0 2
2 4.0 4
3 NaN 5
Тебе нужно inplace
быть правдой:
df.drop_duplicates(subset=None, keep='first', inplace=True)