Панды автоматически переименовывают те же заголовки - PullRequest
0 голосов
/ 15 октября 2018

Я использую Python 3.7 с pandas.

Я успешно загрузил свой CSV-файл и поместил заголовки в список

csv_file = pandas.read_csv(file, encoding="ISO-8859-1")
headers = [line.upper() for line in csv_file]

Однако, когда я печатаю headers,к тем же заголовкам добавляется . [число] , такое как

['ADID', 'FIRST NAME', 'LAST NAME', 'FULL NAME', 'ADID.1', 'ADID.2', 'ROLE 2', 'GROUP', 'DIVISION', 'TEAM', 'COMPANY']  

ADID, ADID.1 и ADID.2, все должны быть ADID согласно входному файлу.

Так панды относятся к одним и тем же заголовкам?Может ли это быть отключено?

Ответы [ 3 ]

0 голосов
/ 15 октября 2018

Существует опция с именем mangle_dupe_cols, которая по умолчанию имеет значение True (то есть делает дублирующиеся столбцы как X, X.1, ..., XN), но этот параметр не обязательно должен быть установлен как False.

Поскольку pandas предупреждает в своем документе, «Передача в False приведет к перезаписи данных, если в столбцах есть повторяющиеся имена».

Источник: https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html

0 голосов
/ 15 октября 2018

Возможно, но не рекомендуется.

Вы можете использовать str.replace с regex - (\.\d+)$:

. соответствует персонажу.буквально (с учетом регистра)
\ d + соответствует цифре (равно [0-9])
+ Квантор - соответствует от одного до неограниченного количества раз, столько разнасколько возможно, возвращая по мере необходимости (жадный)
$ отстаивает позицию в конце строки


c = ['ADID', 'FIRST NAME', 'LAST NAME', 'FULL NAME', 
     'ADID.1', 'ADID.2', 'ROLE 2', 'GROUP', 'DIVISION', 'TEAM', 'COMPANY']  
df = pd.DataFrame(columns=c)

df.columns = df.columns.str.replace('(\.\d+)$','')
print (df)
Empty DataFrame
Columns: [ADID, FIRST NAME, LAST NAME, FULL NAME, 
          ADID, ADID, ROLE 2, GROUP, DIVISION, TEAM, COMPANY]
Index: []
0 голосов
/ 15 октября 2018

Есть ли в вашем CSV-файле несколько заголовков, называемых "ADID"?

Это не сработает.Заголовки должны быть уникальными.В противном случае, если вы обращаетесь к столбцу «ADID», как он узнает, говорите ли вы об ADID или ADID.1 или ADID.2?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...