我有一个pandas DataFrame对象,如下所示:
In [106]: df
Out [106]: df[
Amount Category
date
2014-08-05 18.40 Thing01
2014-08-05 192.60 Thing01
2014-08-05 10.42 Thing02
2014-08-05 13.34 Thing07
2014-08-05 364.56 Thing04
2014-08-05 843.21 Thing03
2014-08-04 14.65 Thing04
2014-08-04 56.98 Thing11
2014-08-04 76.21 Thing99
2014-08-04 786.22 Thing99
2014-08-04 87.44 Thing99
2014-08-04 53.23 Thing01
2014-08-04 32.12 Thing99
]
我想按“类别”对这些数据进行分组,并使用结果创建一个如下所示的Python字典:
In [107]: OutInfo
Out [107]: OutInfo = {
Thing01:
Amount
date
2014-08-05 18.40
2014-08-05 192.60
2014-08-04 53.23
Thing02:
Amount
date
2014-08-05 10.42
Thing07:
Amount
date
2014-08-05 13.34
Thing04:
Amount
date
2014-08-05 364.56
2014-08-04 14.65
Thing03:
Amount
date
2014-08-05 843.21
Thing11:
Amount
date
2014-08-04 56.98
Thing99:
Amount
date
2014-08-04 76.21
2014-08-04 786.22
2014-08-04 87.44
}
我尝试过使用如下命令:df.groupby(“Category”),最后包含各种函数,包括.apply方法(我也不完全理解......)。我尝试了其他方法,但事实上我有一天有多个条目阻止我使用它们。在此先感谢您的帮助!
-Jeremy
答案 0 :(得分:0)
groupby
是正确的想法。为了得到你想要的东西,你可以做类似
>>> d = {k: v.drop("Category", axis=1) for k,v in list(df.groupby("Category"))}
>>> pprint.pprint(d)
{'Thing01': Amount
date
2014-08-05 18.40
2014-08-05 192.60
2014-08-04 53.23,
[...]
'Thing99': Amount
date
2014-08-04 76.21
2014-08-04 786.22
2014-08-04 87.44
2014-08-04 32.12}
如果您在list
对象上调用groupby
,则会获得组键/值元组的列表。如果你打电话给dict(list(grouped))
,这就变成了字典。但是,通常情况下,您不会像在示例所需的输出中那样删除键列。因此,如果您愿意保留额外的专栏,那就更容易了:
>>> d = dict(list(df.groupby("Category")))
>>> d["Thing01"]
Amount Category
date
2014-08-05 18.40 Thing01
2014-08-05 192.60 Thing01
2014-08-04 53.23 Thing01