来自CSV的Pandas数据框。具有相同名称的列

时间:2020-03-23 12:40:53

标签: python-3.x pandas csv dataframe

我有一个包含很多列的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 个答案:

答案 0 :(得分:1)

Series.str.splitstr一起建立索引:

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

答案 1 :(得分:0)

如果您的实际列名不包含.,则可以使用以下方法将列名改回:

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