2016-03-02 27 views
0

我有熊貓數據幀,out,即我被列,cityraingarden使用 以下一系列在計算計數製表數據幀city raingarden 55405 True 3 Edina True 7 MInneapolis True 8 Minneapolis False 2482 True 847 Minneapolis False 2 True 1 Minneapolis, True 1 Minneapolis, False 2 Minneapolsi False 5 True 3 Minnepolis False 4 Minnespolis False 4 Minnetonka False 1 True 2 Minnneapolis False 5 Mpla True 3 Mpls False 22 True 20 Mpls. False 8 True 17 NE Mpls True 6 Richfield True 1 SLP True 3 St Louis Park True 2 St. Louis Park False 1 Victoria False 1 Wayzata False 2 True 1 minneapolis False 3 mpls True 2 dtype: int64與GROUPBY和大小的方法

我想拿這個並輸出到tabulate表。

要做到這一點,我做了以下內容:

headers = ['city','has rain garden', 'n'] 
print tabulate(out.groupby(['city','raingarden']).size().to_frame(), headers, tablefmt="simple") 

問題1:我需要在數列名,但還沒有任何運氣;

第2期(這可能與第1期),輸出看起來是這樣的:

city       has rain garden 
-------------------------- ----------------- 
(u'55405', True)       3 
(u'Edina', True)       7 
(u'MInneapolis', True)      8 
(u'Minneapolis', False)     2482 
(u'Minneapolis', True)     847 
(u'Minneapolis ', False)     2 
(u'Minneapolis ', True)      1 
(u'Minneapolis,', True)      1 
(u'Minneapolis, ', False)     2 
(u'Minneapolsi', False)      5 
(u'Minneapolsi', True)      3 
(u'Minnepolis', False)      4 
(u'Minnespolis', False)      4 
(u'Minnetonka', False)      1 
(u'Minnetonka', True)      2 
(u'Minnneapolis', False)     5 
(u'Mpla', True)        3 
(u'Mpls', False)       22 
(u'Mpls', True)       20 
(u'Mpls.', False)       8 
(u'Mpls.', True)       17 
(u'NE Mpls', True)       6 
(u'Richfield', True)      1 
(u'SLP', True)        3 
(u'St Louis Park', True)     2 
(u'St. Louis Park', False)     1 
(u'Victoria', False)      1 
(u'Wayzata', False)       2 
(u'Wayzata', True)       1 
(u'minneapolis', False)      3 
(u'mpls', True)        2 

前兩列給出一個元組?因此,我如何將它們分成不同的列,以及如何爲我的計數添加標籤?我確信我想要實現的目標應該比我嘗試的要簡單得多。

+0

也許''pivot_table''是你所需要的。查看https://stackoverflow.com/questions/34315837/groupby-and-pivot-pandas-table – as133

+0

'.unstack()'的結果。 – Alexander

+0

你可以在問題中添加'out.head()',以便我們知道原始數據是什麼樣的? –

回答

1

通過摸索兩列,你正在創建一個多級索引Series,我認爲這不是你想要的。我不知道數據如何原來的樣子(將是很好的問題提供out.head()),但我相信你正在尋找的是:

out.groupby('city').sum()['raingarden'] 

下面是一些隨機生成的數據爲例:

import random 
import string 
import pandas as pd 
import numpy as np 

city = random.sample(string.lowercase*500,100) 
raingarden = np.random.randint(0,10,100) 

out = pd.DataFrame({'city':city, 'raingarden':raingarden}) 

輸出:

In [30]: out.groupby('city').sum()['raingarden'] 
Out[30]: 
city 
a 17 
b  7 
c 16 
d  8 
e 24 
f 28 
g 16 
h 49 
i 29 
j 24 
k  4 
l  5 
m 17 
n 29 
p 22 
q 14 
r 19 
s  6 
t 21 
u  8 
v 18 
w 25 
x 11 
y  9 
z 40 
Name: raingarden, dtype: int64 
+0

是的,就是這樣......不知道爲什麼我按兩列分組。 –

+0

我不得不使用count()方法,因爲'raingarden'是一個布爾值。但是,這是做到了。 –