(对所有这些简单明了的问题道歉。大熊猫入门让我起了墙。)
鉴于这个简短的脚本:
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
我现在很困惑。