分组我有一个数据帧DF1获得集索引值,由列今年
date
sample
a1 2005-08-28
b1 2005-06-23
c1 2006-01-11
d1 ...
最后,我想的样本集的字典,按年分组。因此,像
dict_y = {"2005": {a1, b2}, "2006": {c1}, ...}
我想接近这将是利用熊猫GROUPBY最好的方式,但我似乎无法得到它的工作。
df2 = df1.reset_index()
df2 = df2.set_index([(df2["date"].dt.year)])
df3 = df2.groupby(df2.index.values)
但是这里df3并不是按年份整齐分组的数据框,而只是一个“GroupBy对象”。我在这里做错了什么?
作品(几乎)像一个魅力!但是,必须在那里删除.date,因为它返回AttributeError:'Series'对象没有'date'属性。但没有.date它有效。另一件事是,它返回的年份不是整数,而是一位小数,例如“2016.0”。任何想法可能会导致这种行为或如何摆脱它? –
我想你可以删除'date',因为你有'Series',而不是'DataFrame'就像'df = pd.Series([pd.Timestamp('2005-08-28 00:00:00'), pd .Timestamp('2005-06-23 00:00:00'), pd.Timestamp('2006-01-11 00:00:00')],index = ['a1','b1','c1 '])',所以没关系,因为Series没有列。 float的另一个问题可能是'pandas'的版本,我测试它在'0.19.2'或者'Series'中的一些'NaT'值 - 通过'(df [df.isnull()])检查' – jezrael