Pandas фрейм данных из CSV. Колонны с тем же именем - PullRequest
0 голосов
/ 23 марта 2020

У меня есть CSV с большим количеством столбцов (1314):

ColumnA   ColumnA   ColumnA   ColumnB   ColumnC   ColumnB   ColumnM
      5         9         5         1         6         8         9
      5         1         3         5         8         6         8

Я хотел бы группировать по столбцам, суммируя значения, но когда я пытаюсь получить кадр данных из этого CSV, столбцы измените их имена на:

ColumnA   ColumnA.1   ColumnA.2   ColumnB   ColumnC   ColumnB.1   ColumnM
      5           9           5         1         6           8         9
      5           1           3         5         8           6         8

Так что я не могу группировать по столбцам ...

Есть ли способ создать фрейм данных из этого CSV, сохраняя имя столбцов?

Ответы [ 2 ]

1 голос
/ 23 марта 2020

Использовать Series.str.split с индексацией по str:

df.columns = df.columns.str.split('.').str[0]
print (df)
   ColumnA  ColumnA  ColumnA  ColumnB  ColumnC  ColumnB  ColumnM
0        5        9        5        1        6        8        9
1        5        1        3        5        8        6        8

Если хотите использовать groupby, тогда нет необходимости удалять их:

df = df.groupby(lambda x: x.split('.')[0], axis=1).sum()
print (df)
  ColumnA  ColumnB  ColumnC  ColumnM
0       19        9        6        9
1        9       11        8        8
0 голосов
/ 23 марта 2020

Если фактическое имя столбца не содержит ., вы можете изменить имя столбца обратно на:

df = pd.read_csv(path_to_csv)
df.columns = df.columns.str.extract('^([^\.]*)')[0].values

Вывод:

   ColumnA  ColumnA  ColumnA  ColumnB  ColumnC  ColumnB  ColumnM
0        5        9        5        1        6        8        9
1        5        1        3        5        8        6        8
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...