我面临过滤后的数据帧和分组依据的问题
说我有这个数据框
id product date 0 220 6647 2015-09-01 1 220 6647 2014-09-03 2 220 6647 2014-10-16 3 826 3380 2014-11-11 4 826 3380 2015-12-09 5 826 3380 2015-05-19 6 901 4555 2015-09-01 7 901 4555 2014-10-05 8 901 4555 2014-11-01
我想首先选择2015年的行,然后选择groupby id并获取日期的最新信息
我读过this article,在整个df上效果都很好。
但是如果我先尝试像这样过滤df,似乎就行不通了
my_date = datetime.datetime(2014, 12, 31)
df = df[df.date>my_date]
现在我是否运行以下代码
df.loc[df.groupby('id').date.idxmax()]
它给了我以下错误
尝试获取空序列的argmax
任何帮助将不胜感激:) 谢谢
答案 0 :(得分:0)
在df = df[date>my_date]
中,您只有date
,而没有df.date
,因此很可能会导致错误。
此代码:
import pandas as pd
from io import StringIO
from datetime import datetime
txt = '''id product date
220 6647 2015-09-01
220 6647 2014-09-03
220 6647 2014-10-16
826 3380 2014-11-11
826 3380 2015-12-09
826 3380 2015-05-19
901 4555 2015-09-01
901 4555 2014-10-05
901 4555 2014-11-01'''
df = pd.read_fwf(StringIO(txt))
df['date'] = pd.to_datetime(df['date']) # convert date to datetime
my_date = datetime(2014, 12, 31)
df = df[df.date>my_date]
print(df.loc[df.groupby('id').date.idxmax()])
打印:
id product date
0 220 6647 2015-09-01
4 826 3380 2015-12-09
6 901 4555 2015-09-01
答案 1 :(得分:0)
好,我知道了
我发布的示例取自另一篇文章,并且效果很好
我自己的例子有些不同
我的数据框分组依据是taype类别
如果我将其保留为对象