2015-12-18 42 views
1

我非常新手Python的大熊猫用户所以这可能是一个愚蠢的问题和大熊猫可能有简单的方法来完成这个操作数据帧转型

我的数据帧如下:

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 

我该如何在熊猫中做到这一点?

+0

此操作的输出是什么? – 1974sb

回答

1

组列,获得各计数,然后拆散结果。

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 
+0

如果我只有两列 - 名称和活动,我会看到不同的行为。有两列,我没有计数但是空的单元格。有什么想法吗? – 1974sb

+0

你在计算什么?如果你的df只有名称和活动,并且你使用这两个来进行分组,那么你想要计算什么? – Alexander

+0

我想统计时间的数量,任何名字都做了一个活动。对于上面的例子,A​​bc跑了3次,没有走路。 – 1974sb

1

你想组的名字和活动,并得到总和:

df.groupby(['Name', 'Activity']).sum()