首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >来自csv的Pandas数据帧。具有相同名称的列

来自csv的Pandas数据帧。具有相同名称的列
EN

Stack Overflow用户
提问于 2020-03-23 20:40:54
回答 2查看 119关注 0票数 0

我有一个包含很多列的csv (1314):

代码语言:javascript
运行
复制
ColumnA   ColumnA   ColumnA   ColumnB   ColumnC   ColumnB   ColumnM
      5         9         5         1         6         8         9
      5         1         3         5         8         6         8

我想按列分组汇总这些值,但当我尝试从此csv获取数据框时,这些列的名称更改为:

代码语言:javascript
运行
复制
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创建一个保留列名称的数据框?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-03-23 20:43:37

通过str进行索引时使用Series.str.split

代码语言:javascript
运行
复制
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,则不需要删除它们:

代码语言:javascript
运行
复制
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
票数 2
EN

Stack Overflow用户

发布于 2020-03-23 20:43:54

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

代码语言:javascript
运行
复制
df = pd.read_csv(path_to_csv)
df.columns = df.columns.str.extract('^([^\.]*)')[0].values

输出:

代码语言:javascript
运行
复制
   ColumnA  ColumnA  ColumnA  ColumnB  ColumnC  ColumnB  ColumnM
0        5        9        5        1        6        8        9
1        5        1        3        5        8        6        8
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60813757

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档