Python 数据帧转换

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.

我是Python pandas的新手,所以这可能是一个愚蠢的问题,pandas可能有简单的方法来做这个操作

我的数据框如下:

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”,我得到错误。