首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从熊猫数据栏中提取具有重复名称的数据

从熊猫数据栏中提取具有重复名称的数据
EN

Stack Overflow用户
提问于 2022-03-15 06:02:35
回答 4查看 863关注 0票数 1

我有一个具有重复列名的dataframe:

代码语言:javascript
运行
复制
Accepted    Accepted    Accepted    Reject    Accepted    Reject
ABC         IJK         JKL         XYJ       LMN         UIO
BCD         PQR         EFG         YVG       GHIJ        PLK

...and希望将其转换为两个数据格式;一个是“接受”列,另一个是“拒绝”列:

df1:

代码语言:javascript
运行
复制
Accepted    Accepted    Accepted    Accepted
ABC         IJK         JKL         LMN     
BCD         PQR         EFG         GHIJ    

df2:

代码语言:javascript
运行
复制
Reject    Reject
XYJ       UIO
YVG       PLK 

试过:

代码语言:javascript
运行
复制
df1=df["Accepted"]
df2=df["Reject"]

..。但这只会给出与此名称匹配的第一列。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2022-03-15 06:03:23

如果选择一个名称相同的列,则选择DataFrame中所有同名的列:

代码语言:javascript
运行
复制
df1 = df['Accepted']
df2 = df['Reject']

然后是可能的去重复列:

代码语言:javascript
运行
复制
df1.columns = [f'{x}_{i}' for i, x in enumerate(df1.columns, 1)]
df2.columns = [f'{x}_{i}' for i, x in enumerate(df2.columns, 1)]

编辑:如果只获得第一个列名,就意味着没有重复的列名,所以可以使用DataFrame.filter

代码语言:javascript
运行
复制
df1 = df.filter(like='Accepted')
df2 = df.filter(like='Reject')
票数 3
EN

Stack Overflow用户

发布于 2022-03-15 06:28:10

您也可以使用这个

代码语言:javascript
运行
复制
df1 = df.loc[:,df.columns.isin(['accepted'])]

代码语言:javascript
运行
复制
df2 = df.loc[:,df.columns.isin(['rejected'])]
票数 2
EN

Stack Overflow用户

发布于 2022-03-15 06:56:17

不建议使用重复的列名,但无论如何:

代码语言:javascript
运行
复制
df1 = df.loc[:, df.columns.get_loc('Accepted')]

  Accepted Accepted Accepted Accepted
0      ABC      IJK      JKL      LMN
1      BCD      PQR      EFG     GHIJ

df2 = df.loc[:, df.columns.get_loc('Reject')]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71477671

复制
相关文章

相似问题

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