groupby输出 - 并非所有组都是同一类型?

时间:2014-06-24 14:59:01

标签: pandas

(对所有这些简单明了的问题道歉。大熊猫入门让我起了墙。)

鉴于这个简短的脚本:

import pandas as pd
from dateutil.parser import parse as dtparse

frame = pd.DataFrame({'value': range(9)},
                      index=[dtparse("2014-03-14T02:30"),
                        dtparse("2014-03-14T14:45"),
                        dtparse("2014-03-14T16:45"),
                        dtparse("2014-03-15T02:30"),
                        dtparse("2014-03-15T14:45"),
                        dtparse("2014-03-15T16:45"),
                        dtparse("2014-03-16T02:30"),
                        dtparse("2014-03-16T14:45"),
                        dtparse("2014-03-16T16:45")])

grouped = frame.groupby(lambda x: x.date())

def group_filter(x):
    print ">>", type(x)
    return True

print grouped.filter(group_filter)

有人可以解释一下这个输出吗?

>> <class 'pandas.core.series.Series'>
>> <class 'pandas.core.frame.DataFrame'>
>> <class 'pandas.core.series.Series'>
>> <class 'pandas.core.series.Series'>

为什么传递给group_filter的参数不是所有相同的类型,为什么它出现有四个组? (在group_filter中打印x表示与2014-03-14相关联的组被处理两次。)我按日期()分组。应该只有三组,如下所示:

for key, grp in grouped:
    print key, type(grp)
    print grp

得出这个:

2014-03-14 <class 'pandas.core.frame.DataFrame'>
                     value
2014-03-14 02:30:00      0
2014-03-14 14:45:00      1
2014-03-14 16:45:00      2
2014-03-15 <class 'pandas.core.frame.DataFrame'>
                     value
2014-03-15 02:30:00      3
2014-03-15 14:45:00      4
2014-03-15 16:45:00      5
2014-03-16 <class 'pandas.core.frame.DataFrame'>
                     value
2014-03-16 02:30:00      6
2014-03-16 14:45:00      7
2014-03-16 16:45:00      8

我现在很困惑。

0 个答案:

没有答案