Groupby 并将函数应用于 Python 中的子数据框

如何分组item,date然后对于每个子数据帧,获取“数据”值是子数据帧中实际中间值的实际行?


有时会有多行data等于中间值,在这种情况下我们只保留第一行。


df:


    item   date        data

0   22     2012-03-10  10

1   22     2012-03-10  20

2   22     2012-03-10  40

3   24     2012-03-11  40

4   24     2012-03-11  50

5   24     2012-03-11  50

预期输出:


1   22     2012-03-10  20

4   24     2012-03-11  50


千万里不及你
浏览 117回答 4
4回答

墨色风雨

您可以使用groupby().transform()然后使用布尔索引:medians = df.groupby(['item','date'])['data'].transform('median')# drop duplicates in the case # there are multiple rows equal to mediandf[df['data']==medians].drop_duplicates(['item','date','data'])输出:   item        date  data1    22  2012-03-10    204    24  2012-03-11    50

智慧大石

您可以使用以下示例使用 pandas df['date'] = pd.to_datetime(df['date']).dt.datedf1 = df.groupby(['data','date'])['date','data'].median()df1

翻过高山走不出你

尝试这个:df.groupby(['item', 'date'], as_index=False).median()输出:   item        date  data0    22  2012-03-10    201    24  2012-03-11    50

慕森卡

请.groupby(),。agg(median) df[['item', 'date', 'data']].groupby(['date', 'item',]).agg('median').reset_index()        date  item  data0  2012-03-10    22    201  2012-03-11    24    50
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python