我想用groupby
和mean
计算每个ID的平均值。但是,我只需要Date
在2016-01-01
和2017-12-31
之间的行。你知道吗
d = {'ID': ['STCK123', 'STCK123', 'STCK123'], 'Amount': [250, 400, 350],
'Date': ['2016-01-20', '2017-09-25', '2018-05-15']}
data = pd.DataFrame(data=d)
data = data[['ID', 'Amount', 'Date']]
data['Date'] = pd.to_datetime(data['Date'])
这将产生以下df:
ID Amount Date
STCK123 250 2016-01-20
STCK123 400 2017-09-25
STCK123 350 2018-05-15
当我使用:
data.groupby(['ID'])['Amount'].agg('mean')
它将所有行都考虑在内,导致平均值为333.3
。如何排除Date
为2018的行(产生平均值(250+400)/2=325
)?你知道吗
您需要一个带有
query
的预过滤步骤:eval
、query
和相关参数的更多用法可以在我的writeup中找到:Dynamic Expression Evaluation in pandas using pd.eval()有关在调用
groupby
之前删除行的更多方法,请参见here。你知道吗您也可以
mask
这些行,而不必删除它们。nan被排除在GroupBy
聚合之外。你知道吗相关问题 更多 >
编程相关推荐