根据日期创建每月重采样 Pandas DataFrame
Create monthly resampled Pandas DataFrame based on dates
我正在努力尝试将包含多个日期时间列的数据框转换为具有日期范围的版本。
一个较小的例子看起来有点像这样:
因此来自:
key date_upgrade1 date_upgrade2
0 key1 2020-07-31 2020-08-31
1 key2 2020-05-31 NaT
至:
month key upgrade1 upgrade2
0 2020-06-01 key1 0 0
1 2020-07-01 key1 0 0
2 2020-08-01 key1 1 0
3 2020-09-01 key1 1 1
4 2020-06-01 key2 1 0
5 2020-07-01 key2 1 0
6 2020-08-01 key2 1 0
7 2020-09-01 key2 1 0
其中,如果升级尚未完成,升级 1 和升级 2 为“0”,如果已经执行升级,则为“1”。
其实我现在很迷茫。我设法创建了空的 date_range 数据框。但我不确定如何为多个键复制它并将升级日期后的所有值更改为 1。
感谢任何帮助。
同时自己回答了问题:
df = [
df1.assign(month=t)
for t in pd.date_range(first_date, now, freq='MS')
]
df = pd.concat(df)
df.reset_index(drop=True, inplace=True)
df["upgrade1"] = df.month.gt(df.date_upgrade1).astype('int')
df["upgrade2"] = df.month.gt(df.date_upgrade2).astype('int')
将 df1 定义为上层 DataFrame。
我正在努力尝试将包含多个日期时间列的数据框转换为具有日期范围的版本。
一个较小的例子看起来有点像这样:
因此来自:
key date_upgrade1 date_upgrade2
0 key1 2020-07-31 2020-08-31
1 key2 2020-05-31 NaT
至:
month key upgrade1 upgrade2
0 2020-06-01 key1 0 0
1 2020-07-01 key1 0 0
2 2020-08-01 key1 1 0
3 2020-09-01 key1 1 1
4 2020-06-01 key2 1 0
5 2020-07-01 key2 1 0
6 2020-08-01 key2 1 0
7 2020-09-01 key2 1 0
其中,如果升级尚未完成,升级 1 和升级 2 为“0”,如果已经执行升级,则为“1”。
其实我现在很迷茫。我设法创建了空的 date_range 数据框。但我不确定如何为多个键复制它并将升级日期后的所有值更改为 1。
感谢任何帮助。
同时自己回答了问题:
df = [
df1.assign(month=t)
for t in pd.date_range(first_date, now, freq='MS')
]
df = pd.concat(df)
df.reset_index(drop=True, inplace=True)
df["upgrade1"] = df.month.gt(df.date_upgrade1).astype('int')
df["upgrade2"] = df.month.gt(df.date_upgrade2).astype('int')
将 df1 定义为上层 DataFrame。