Python 数据帧转换
我是Python pandas的新手,所以这可能是一个愚蠢的问题,pandas可能有简单的方法来做这个操作 我的数据框如下:Python 数据帧转换,python,pandas,Python,Pandas,我是Python pandas的新手,所以这可能是一个愚蠢的问题,pandas可能有简单的方法来做这个操作 我的数据框如下: Name Activity Date Abc. Run. June 3 Cde. Walk. Sept. 4 Abc. Run. June 4 Abc. Run. June 5 Code.
Name Activity Date
Abc. Run. June 3
Cde. Walk. Sept. 4
Abc. Run. June 4
Abc. Run. June 5
Code. Walk. June 3
Cde. Run. Sept 5
我想把它转换成
Name run freq walk freq
Abc. 3. 0
Cde. 1. 1
Code. 0. 1
如何在熊猫中做到这一点?您希望按名称和活动分组,并获得总数:
df.groupby(['Name', 'Activity']).sum()
对列进行分组,获取每个列的计数,然后取消堆叠结果
df = pd.DataFrame({'Name': ['Abc.', 'Cde.', 'Abc.', 'Abc.', 'Code.', 'Cde.'],
'Activity': ['Run.', 'Walk.', 'Run.', 'Run.', 'Walk.', 'Run.'],
'Date': ['June 3', 'Sept. 4', 'June 4', 'June 5', 'June 3', 'Sept 5']})
>>> df.groupby(['Name', 'Activity']).count().unstack()
Date
Activity Run. Walk.
Name
Abc. 3 NaN
Cde. 1 1
Code. NaN 1
这个操作的输出是什么?如果我只有两列-name和activity,我会看到不同的行为。对于两列,我得到的不是计数,而是空单元格。有什么想法吗?你在数什么?如果您的df只有名称和活动,并且您使用这两个来分组,那么您想计算什么?我想计算时间,任何名称都完成了一项活动。对于上面的示例,Abc运行了3次,没有行走。
df[['Name','Activity']].groupby(['Name','Activity']).Name.count().unstack()
尝试此操作,但当我尝试用“Name Of”替换“Name Of”时,实际数据集中我的列名为“Name Of”,我得到错误。