gpt4 book ai didi

python - 如何计算groupby Python中的平均日期

转载 作者:太空宇宙 更新时间:2023-11-04 00:42:10 24 4
gpt4 key购买 nike

我有一个包含超过 50 万行和 20 列的数据框。我正在尝试根据 date_received 列确定 personId 接收某些内容的频率,所有其他列都与此任务无关,但对后续任务有用。

|---------------------|------------------|
| personId | date_Recieved |
|---------------------|------------------|
| 1 | 2 feb 2016 |
|---------------------|------------------|
| 1 | 4 feb 2016 |
|---------------------|------------------|
| 1 | 6 feb 2016 |
|---------------------|------------------|
| 2 | 10 dec 2016 |
|---------------------|------------------|
| 2 | 1 jan 2017 |
|---------------------|------------------|
| 2 | 20 jan 2017 |
|---------------------|------------------|

date_received 的类型是 pandas.tslib.Timestamp 我正在寻找这样的东西:

|---------------------|------------------|
| personId | Frequency |
|---------------------|------------------|
| 1 | 2 days |
|---------------------|------------------|
| 2 | 20.5 days |
|---------------------|------------------|

因此,一般情况下,第 1 个人每 2 天收到一次东西,第 2 个人每 20.5 天收到一次东西。

我尝试使用 groupby 函数,但仍然无法通过我的数据框获得响应。

有人可以帮我解决这个问题吗?

最佳答案

使用 groupbylambda

df.groupby('personId').date_Recieved.apply(lambda x: x.diff().dropna().mean())

personId
1 2 days 00:00:00
2 20 days 12:00:00
Name: date_Recieved, dtype: timedelta64[ns]

设置

txt = """
personId date_Recieved
1 2 feb 2016
1 4 feb 2016
1 6 feb 2016
2 10 dec 2016
2 1 jan 2017
2 20 jan 2017
"""

df = pd.read_csv(StringIO(txt), sep='\s{2,}', engine='python', parse_dates=[1])

关于python - 如何计算groupby Python中的平均日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41455272/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com