使用pandas groupby或其他函数对多个数据帧进行子集的简单方法?

时间:2017-01-05 00:19:21

标签: python pandas dataframe

我有一个DataFrame,其中有两列我使用此命令result = pd.concat([Value, Date], axis=1)

import pandas as pd

>>> result
                         Value      Date
189                        9.0  11/14/15
191                       10.0  11/14/15
192                        1.0  11/14/15
193                        4.0  11/14/15
...                        ...       ...
2920                       6.0   2/20/16
2921                       8.0   2/20/16
2923                      10.0   2/20/16
2925                       2.0   2/20/16

但我需要的是每个Value的所有Date数据的多个数据帧。我知道我可以执行类似x = result.groupby('Date').mean()的内容,它为每个Value提供了Date的平均值,但我希望实际数据位于用于生成平均值的数据框中。< / p>

是否有另一个参数或函数来简单地获取此数据框?

2 个答案:

答案 0 :(得分:3)

根据您的评论,您可以直接使用seaborn绘制所有日期的distplot,而无需使用FacetGrid进行任何分组或循环。这是12天的一些假数据,然后是情节。

创建虚假数据,然后绘制

date = pd.date_range('1-1-2016', '1-13-2016', freq='h', closed='left').date
df = pd.DataFrame({'num' : np.random.rand(len(date)), 'date':date})

g = sns.FacetGrid(df, col='date', col_wrap=4)
g.map(sns.distplot, "num", hist=False, rug=True)

enter image description here

您的具体数据

g = sns.FacetGrid(result, col='Date', col_wrap=4)
g.map(sns.distplot, 'Value', hist=False, rug=True)

答案 1 :(得分:1)

你需要一个放置每个DataFrame的地方。我们假设你把它放在字典d

d = {day: group for day, group in result.groupby('Date')}