Удалите столбцы Без названия в pandas dataframe
У меня есть файл данных из столбцов A-G, как показано ниже, но когда я читаю его с помощью pd.read_csv('data.csv')
, он печатает дополнительный столбец unnamed
в конце без каких-либо причин.
colA ColB colC colD colE colF colG Unnamed: 7
44 45 26 26 40 26 46 NaN
47 16 38 47 48 22 37 NaN
19 28 36 18 40 18 46 NaN
50 14 12 33 12 44 23 NaN
39 47 16 42 33 48 38 NaN
Я видел файл данных раз в разное время, но у меня нет дополнительных данных в любом другом столбце. Как я должен удалить этот дополнительный столбец во время чтения? Благодаря
Ответы
Ответ 1
df = df.loc[:, ~df.columns.str.contains('^Unnamed')]
In [162]: df
Out[162]:
colA ColB colC colD colE colF colG
0 44 45 26 26 40 26 46
1 47 16 38 47 48 22 37
2 19 28 36 18 40 18 46
3 50 14 12 33 12 44 23
4 39 47 16 42 33 48 38
если первый столбец в CSV файле имеет значения индекса, то вместо этого вы можете сделать это:
df = pd.read_csv('data.csv', index_col=0)
Ответ 2
Сначала найдите столбцы, которые имеют "безымянный", а затем отбросьте эти столбцы. Примечание. Вы также должны добавить inplace = True
к параметрам .drop
.
df.drop(df.columns[df.columns.str.contains('unnamed',case = False)],axis = 1, inplace = True)
Ответ 3
Функция pandas.DataFrame.dropna
удаляет пропущенные значения (например, NaN
, NaT
).
Например, следующий код удалит все столбцы из вашего фрейма данных, где отсутствуют все элементы этого столбца.
df.dropna(how='all', axis='columns')
Ответ 4
Утвержденное решение не работает в моем случае, поэтому мое решение следующее:
''' The column name in the example case is "Unnamed: 7"
but it works with any other name ("Unnamed: 0" for example). '''
df.rename({"Unnamed: 7":"a"}, axis="columns", inplace=True)
# Then, drop the column as usual.
df.drop(["a"], axis=1, inplace=True)
Надеюсь, что это помогает другим.