Pandas 通過在時間戳字段上滾動窗口函數進行分組

用戶287023

我想在按 ID 列分組後添加列中包含的日期和天數。

下面生成一個示例 df:

df = pd.DataFrame(
    {
        "ID":[1,1,1,1,2,2,2,3,3,3,3,3,3],
        "Date":list(pd.date_range("2018-1-1", "2018-4-10", periods=4)) + list(pd.date_range("2018-6-6", "2018-7-30", periods=3)) + list(pd.date_range("2018-1-1", "2020-1-1", periods=6))
    }
)
df['date_intervals'] = df.groupby('ID').Date.diff()
df['new_date_intermediate'] = df.date_intervals.mask(pd.isnull, df['Date'])

這導致此 df: 在此處輸入圖片說明

按 ID 字段分組,我想要一個累積總和返回日期。

例如,對於 ID = 1,我想要第一行 + 第二行的向量,這將是 2018-01-01 + 33 天,然後是該總和的結果加上第三行,這又增加了 33 天.

貝尼

你可以做 cumsum

df['new_date_intermediate'] = df.groupby('ID')['new_date_intermediate'].apply(lambda x :x.cumsum())
df
    ID       Date date_intervals new_date_intermediate
0    1 2018-01-01            NaT   2018-01-01 00:00:00
1    1 2018-02-03        33 days   2018-02-03 00:00:00
2    1 2018-03-08        33 days   2018-03-08 00:00:00
3    1 2018-04-10        33 days   2018-04-10 00:00:00
4    2 2018-06-06            NaT   2018-06-06 00:00:00
5    2 2018-07-03        27 days   2018-07-03 00:00:00
6    2 2018-07-30        27 days   2018-07-30 00:00:00
7    3 2018-01-01            NaT   2018-01-01 00:00:00
8    3 2018-05-27       146 days   2018-05-27 00:00:00
9    3 2018-10-20       146 days   2018-10-20 00:00:00
10   3 2019-03-15       146 days   2019-03-15 00:00:00
11   3 2019-08-08       146 days   2019-08-08 00:00:00
12   3 2020-01-01       146 days   2020-01-01 00:00:00

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何通過對多個變量進行分組來創建新的 Pandas 數據框?

通過 min() 對 Pandas 進行條件分組

Pandas - 按值分組生成連續行序列(按時間戳)

如何在指數下降的 Pandas 中進行滾動求和?

應用對行子集上的 Pandas 數據幀進行操作的函數

將單元格拆分為多行並在 Pandas 中進行分組計數

Pandas 對數據幀進行上採樣並在特定窗口上進行累積總和

根據pandas中的字典對數據框的行進行分組並對相應的分子求和

如何根據字符串層次結構對 Pandas 數據框進行分組?

Pandas 與 Pandas 的時間數據值相加(從分鐘到小時的值)

通過使用 Pandas 將定義的條件與輸入列進行比較,在數據集中附加一個空的輸出列

在 Pandas DataFrame 中,當每個單元格都是一個數組時,對每個子數組進行排序

如何通過對數據進行分組來返回唯一的行

Pandas 按列分組並應用函數創建新列

如何在沒有任何統計數據(如 Pandas 中的均值或計數)的情況下進行簡單分組?

通過添加具有相同索引的行來加入 2 個 pandas 數據幀

如何在groupby函數中在pandas中進行嵌套重命名

如何對 Pandas 列進行分組以創建新的百分比列

使用 Pandas 函數 isin()

在 Pandas 數據框中的一組行之後提取行窗口

Pandas 數據幀上的 SUMIF 函數

通過滑動窗口重複Numpy數組

Pandas 計算過濾數據集的時間增量

如何使用一列或另一列對 Pandas DataFrame 進行分組

Pandas 按 1 的值對列進行分組並按頻率排序

如何按時間戳列的日期部分對行進行分組?

如何使用累積總和在 Pandas 數據框中執行窗口函數操作?

Python - Pandas 過濾器和分組依據

Pandas 中是否有一個函數可以查找數據幀行中某些數據的“間隙”?