【发布时间】:2022-11-17 04:35:14
【问题描述】:
我有以下 DataFrame,有超过 300 万行:
VALID_FROM VALID_TO VALUE
0 2022-01-01 2022-01-02 5
1 2022-01-01 2022-01-03 2
2 2022-01-02 2022-01-04 7
3 2022-01-03 2022-01-06 3
我想创建一个大的 date_range,其中包含每个时间戳的值之和。
对于上面的 DataFrame,结果是:
dates val
0 2022-01-01 7
1 2022-01-02 14
2 2022-01-03 12
3 2022-01-04 10
4 2022-01-05 3
5 2022-01-06 3
但是,由于 DataFrame 有超过 300 万行,我不想遍历每一行,而且我不确定如何在不迭代的情况下执行此操作。有什么建议么?
目前我的代码如下所示:
new_df = pd.DataFrame()
for idx, row in dummy_df.iterrows():
dr = pd.date_range(row["VALID_FROM"], end = row["VALID_TO"], freq = "D")
tmp_df = pd.DataFrame({"dates": dr, "val": row["VALUE"]})
new_df = pd.concat(objs=[new_df, tmp_df], ignore_index=True)
new_df.groupby("dates", as_index=False, group_keys=False).sum()
groupby 的结果将是我想要的输出。
【问题讨论】:
标签: python pandas dataframe datetime date-range