我有一个包含很多列的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创建数据框并保留列名?
答案 0 :(得分:1)
将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
答案 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