为啥 pandas.groupby 保留密钥?
Posted
技术标签:
【中文标题】为啥 pandas.groupby 保留密钥?【英文标题】:Why does pandas.groupby keep the key?为什么 pandas.groupby 保留密钥? 【发布时间】:2022-01-22 16:47:21 【问题描述】:我想对数据框执行以下操作。
import pandas as pd
import datetime
t = pd.DataFrame('id': [1, 1, 2, 2],
'date': [datetime.date(2020,1,1), datetime.date(2020,1,2)] * 2,
'value': [1, 2, 3, 5])
t.groupby('id').apply(lambda df: df.set_index('date').diff())
我得到了下面的结果
id value
id date
1 2020-01-01 NaN NaN
2020-01-02 0.0 1.0
2 2020-01-01 NaN NaN
2020-01-02 0.0 2.0
我的问题是为什么要保留 id 列。我希望“id”列在此操作后消失。我想要的是
t.set_index(['id', 'date']).groupby(level=0).diff()
Out[92]:
value
id date
1 2020-01-01 NaN
2020-01-02 1.0
2 2020-01-01 NaN
2020-01-02 2.0
【问题讨论】:
当您运行 apply 时,您实际上是在每个具有 id 的子数据帧上运行一个 for 循环。内置函数/聚合知道如何将 groupby 键与数据框分开 【参考方案1】:一个想法是指定列:
df = t.groupby('id')[['date','value']].apply(lambda df: df.set_index('date').diff())
我认为原因是因为使用了DataFrame.diff
,所以处理groupby.apply
中的所有列。
【讨论】:
以上是关于为啥 pandas.groupby 保留密钥?的主要内容,如果未能解决你的问题,请参考以下文章