groupby pandas中的原始索引列

Posted

技术标签:

【中文标题】groupby pandas中的原始索引列【英文标题】:Column of original indices in groupby pandas 【发布时间】:2019-01-06 17:19:45 【问题描述】:

我正在使用以下功能:

first_last = df.groupby(['stock', Grouper(freq='D')])['price'].agg(['first','last'])

,它为我提供了一个数据框,其中包含每只股票每天的第一个非 nan 和最后一个非 nan 价格。

能否请您帮帮我,如何在创建的“first_last”df 中添加两列,以便它们包含数据帧“df”的原始索引,从中获取第一个和最后一个值?

原来的df格式如下:

    Index                  price              stock            
2016-10-21 17:00:00        150                 85
2016-10-21 17:30:00        100                 85
2016-10-21 17:00:00         50                 88

-- 我需要在 df "first_last" 中第一个和最后一个价格值的每个值前面都有“索引”。

【问题讨论】:

【参考方案1】:

您需要从 DatetimeIndex 创建具有相同缺失值的辅助列,例如 price 列,然后聚合两列:

df['idx'] = df.index.where(df['price'].notnull(),  np.nan)

first_last = df.groupby(['stock', pd.Grouper(freq='D')])['price', 'idx'].agg(['first','last'])
first_last.columns = first_last.columns.map('_'.join)
print (first_last)
                  price_first  price_last           idx_first  \
stock Index                                                     
85    2016-10-21          150         100 2016-10-21 17:00:00   
88    2016-10-21           50          50 2016-10-21 17:00:00   

                            idx_last  
stock Index                           
85    2016-10-21 2016-10-21 17:30:00  
88    2016-10-21 2016-10-21 17:00:00  

【讨论】:

以上是关于groupby pandas中的原始索引列的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 groupby 调整 pandas 中的小计列?

Pandas将groupby操作的结果保存为原始数据框中的新列[关闭]

Pandas groupby 和聚合输出应包括所有原始列(包括未聚合的列)

如何在 groupby 2 列之后保留 DataFrame 的原始索引?

Pandas 在 groupby 和 nlargest 之后创建额外(重复)索引

Python Pandas DF Pivot 和 Groupby