在具有多个可变列的数据框上应用Pandasmelt() [英] Applying Pandas melt() on a dataframe with multiple variable columns

查看:63
本文介绍了在具有多个可变列的数据框上应用Pandasmelt()的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个数据框.行是唯一的人,列是采取的各种操作类型.我需要重组数据以按行显示各个事件.这是我当前想要的格式,以及我一直在尝试实现的方法.

I have a dataframe. Rows are unique persons and columns are various action types taken. I need the data restructured to show the individual events by row. Here is my current and desired format, as well as the approach I've been trying to implement.

current = pd.DataFrame({'name': {0: 'ross', 1: 'allen', 2: 'jon'},'action a': {0:'2017-10-04', 1:'2017-10-04', 2:'2017-10-04'},'action b': {0:'2017-10-05', 1:'2017-10-05', 2:'2017-10-05'},'action c': {0:'2017-10-06', 1:'2017-10-06', 2:'2017-10-06'}})


desired = pd.DataFrame({'name':['ross','ross','ross','allen','allen','allen','jon','jon','jon'],'action':['action a','action b','action c','action a','action b','action c','action a','action b','action c'],'date':['2017-10-04','2017-10-05','2017-10-05','2017-10-04','2017-10-05','2017-10-05','2017-10-04','2017-10-05','2017-10-05']})

推荐答案

使用df.melt(v0.20 +):

Use df.melt (v0.20+):

df
     action a    action b    action c   name
0  2017-10-04  2017-10-05  2017-10-06   ross
1  2017-10-04  2017-10-05  2017-10-06  allen
2  2017-10-04  2017-10-05  2017-10-06    jon

df = df.melt('name').sort_values('name')
df.columns = ['name', 'action', 'date']
df
    name    action        date
1  allen  action a  2017-10-04
4  allen  action b  2017-10-05
7  allen  action c  2017-10-06
2    jon  action a  2017-10-04
5    jon  action b  2017-10-05
8    jon  action c  2017-10-06
0   ross  action a  2017-10-04
3   ross  action b  2017-10-05
6   ross  action c  2017-10-06

这篇关于在具有多个可变列的数据框上应用Pandasmelt()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆