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

标签 python pandas

我有一个超过 500K 行和 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    |
|---------------------|------------------|

因此,一般来说,第一个人每 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 - 如何计算Python中groupby日期的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41455272/

相关文章:

python - BeautifulSoup Python 到 Dataframe

python - 如何在GAE上过滤图像?

python - python中的两个相邻列表

python - 操作系统错误 : [WinError 193] %1 is not a valid Win32 application while reading custom DLL in python with CTypes

python - 如何使用 pandas 和 matplotlib 生成离散数据以传递到等高线图?

Pandas 数据框到二维 numpy 数组

python - Conda - 如何在现有环境中仅更新 cudatoolkit?

python - 无法执行 Python Pandas set_value

python - Pandas TimeGrouper : . median() 的行为与 .quantile(0.5) 不同

python - 如何将大文件读取为 Pandas 数据框?