Удаление повторяющихся столбцов из pandas.read_csv () - PullRequest
0 голосов
/ 04 мая 2018

По умолчанию pandas.read_csv() изменяет дубликаты заголовков CSV в форме X, X.1, ..., X.N.

Флаг mangle_dupe_cols = False возвращает:

ValueError: Setting mangle_dupe_cols=False is not supported yet

Мне кажется глупым, почему вы позволяете использовать логический флаг, но отключаете логическое значение ...

Есть ли способ через API pandas, который лучше всего подходит для обнаружения / удаления дублирующихся заголовков при инициализации DataFrame методом read_csv()?

Возможное решение (без API) :

headers = set(df.columns) # will include 'X' and 'X.1'
n = 0
unique = []
for i in range(len(headers)):
    d = 1
    if i != n:
        continue # skip dupes
    elif (headers[i] + '.' + str(d)) in headers:
        while True: # find next unique element
            d += 1
            n += 1
            if (headers[i] + '.' + str(d)) not in headers:
                break
    unique.append(headers[i])
    n += 1

1 Ответ

0 голосов
/ 04 мая 2018

Я мог бы сделать что-то вроде

In [22]: df = pd.read_csv("dup.col")

In [23]: df
Out[23]: 
   A  A.1  B  C  C.1  C.2  D  E  C.3
0  1    2  3  4    5    6  7  8    9
1  1    2  3  4    5    6  7  8    9

In [24]: df.loc[:, ~df.columns.str.replace("(\.\d+)$", "").duplicated()]
Out[24]: 
   A  B  C  D  E
0  1  3  4  7  8
1  1  3  4  7  8

(С немного большим уклоном мы могли бы обрабатывать и нестроковые столбцы, но, возможно, YAGNI.)

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