我有一个包含很多列的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创建一个保留列名称的数据框?
发布于 2020-03-23 20:43:37
通过str
进行索引时使用Series.str.split
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
发布于 2020-03-23 20:43:54
如果您的实际列名不包含.
,则可以使用以下命令将列名改回:
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
https://stackoverflow.com/questions/60813757
复制相似问题