首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将行转到列,同时基于组平放数据

将行转到列,同时基于组平放数据
EN

Stack Overflow用户
提问于 2019-09-25 02:14:13
回答 2查看 1.5K关注 0票数 2

我有以下数据。

代码语言:javascript
复制
idx Group      key     value  Time     IsTrue  
1   bicycle    person  yes    9:30      yes         
2   bicycle    name    bob    9:30      yes         
3   bicycle    alive   yes    9:30      yes            
5   non-cycle  person  no     1:30      no      
6   non-cycle  name    jack   1:30      no               

我想从dataframe得到以下结果

代码语言:javascript
复制
idx Group       Time  IsTrue person name  alive
1   bicycle     9:30  yes    yes    bob   yes
2   non-cycle   1:30  no     no     jack  NA

键列变成新列的地方,值是这些新列的行。其他所有行都有相同的值,但键列和值列除外。钥匙变了,所以我要做些有活力的事情。

我目前的解决方案使用了熊猫群&应用(基于group列),并为每个组创建了一个新的数据格式,但这似乎超出了工程化的范围。有更简单的解决办法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-25 02:38:57

编辑

作为你的固定输出。我使用set_indexunstack添加了另一个解决方案

代码语言:javascript
复制
df.set_index(['Group', 'Time', 'IsTrue', 'key'])['value'].unstack().reset_index()

Out[503]:
key      Group  Time IsTrue alive  name person
0      bicycle  9:30    yes   yes   bob    yes
1    non-cycle  1:30     no   NaN  jack     no

原版:

你想要的输出令人困惑。如果这是你想要的,让我们试试这个解决方案。如果不是,我会删除它。

代码语言:javascript
复制
df.pivot_table(index=['Group', 'Time', 'IsTrue'], columns='key', values='value', aggfunc='first').reset_index()

Out[487]:
key      Group  Time IsTrue alive  name person
0      bicycle  9:30    yes   yes   bob    yes
1    non-cycle  1:30     no   NaN  jack     no
票数 4
EN

Stack Overflow用户

发布于 2019-09-25 02:49:23

在以下方面:

代码语言:javascript
复制
df = pd.read_clipboard()

pivot = df[['key', 'value', 'Group']].pivot(index='Group',columns='key').droplevel(0, axis=1).reset_index()
df.drop(['idx','key', 'value'], axis=1, inplace=True)

df = df.merge(pivot, on='Group').drop_duplicates().reset_index(drop=True)

退出:

代码语言:javascript
复制
|   | Group     | Time | IsTrue | alive | name | person |
|---|-----------|------|--------|-------|------|--------|
| 0 | bicycle   | 9:30 | yes    | yes   | bob  | yes    |
| 1 | non-cycle | 1:30 | no     | NaN   | jack | no     |
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58090277

复制
相关文章

相似问题

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