Python 使用groupby和size方法将数据框制成表格

Python 使用groupby和size方法将数据框制成表格,python,pandas,group-by,dataframe,series,Python,Pandas,Group By,Dataframe,Series,我有一个熊猫数据框,out,我正在使用 以下系列: out.groupby(['city','raingarden']).size()和输出 城市雨水花园 55405对3 爱迪娜真7 明尼阿波利斯真实8 明尼阿波利斯假2482 真的847 明尼阿波利斯假2 真1 明尼阿波利斯,真的1 明尼阿波利斯,假2 明尼阿波利斯假5 真的3 明尼波利斯假4 明尼斯波利斯假4 米内通卡假1 真实2 明尼阿波利斯假5 Mpla真实3 Mpls False 22 真的20 Mpls。错误8 真的17 NE Mpl

我有一个熊猫数据框,
out
,我正在使用 以下系列:

out.groupby(['city','raingarden']).size()
和输出

城市雨水花园
55405对3
爱迪娜真7
明尼阿波利斯真实8
明尼阿波利斯假2482
真的847
明尼阿波利斯假2
真1
明尼阿波利斯,真的1
明尼阿波利斯,假2
明尼阿波利斯假5
真的3
明尼波利斯假4
明尼斯波利斯假4
米内通卡假1
真实2
明尼阿波利斯假5
Mpla真实3
Mpls False 22
真的20
Mpls。错误8
真的17
NE Mpls真6
里希菲尔德真1
SLP真实3
圣路易斯公园真实2
圣路易斯公园假1号
维多利亚假1
瓦扎塔假2
真1
明尼阿波利斯假3
mpls真实2
数据类型:int64

我想把它输出到一个
表格中

为此,我做了以下工作:

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

前两列以元组形式给出?因此,如何将这些数据拆分为单独的列,以及如何为计数添加标签?我确信我要实现的应该比我尝试的要简单得多。

通过两列摸索,您正在创建一个多级索引
系列,我相信这不是您想要的。我不确定原始数据是什么样子的(最好在问题中提供
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

通过搜索两列,您正在创建一个多级索引
系列
,我相信这不是您想要的。我不确定原始数据是什么样子的(最好在问题中提供
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

也许
pivot\u table
就是您所需要的。请参见
.unstack()
结果。能否将
out.head()
添加到问题中,以便我们了解原始数据的外观?数据透视肯定不是我需要的,但我将需要它用于我正在进行的其他分析,因此感谢您提供的链接。也许
pivot\u table
是您需要的。请参见
.unstack()
结果。您能否将
out.head()
添加到问题中,以便我们了解原始数据的外观?数据透视绝对不是我所需要的,但我将需要它用于我正在进行的其他分析,因此感谢链接。是的,就是这样。。。我不知道为什么要按这两列进行分组。我不得不使用count()方法,因为“Rainggarden”是一个布尔值。但是,这成功了。是的,那成功了。。。我不知道为什么要按这两列进行分组。我不得不使用count()方法,因为“Rainggarden”是一个布尔值。但是,这成功了。