我如何才能将每月 pandas 系列重新索引为分钟,并在该月的结果天数的每一天中具有对应于月份的值?
How can i reindex a monthly pandas series to mins, having the values corresponding to the month in every day of the resulting days of thats months?
我有一个 pandas 这种形式的系列:
1950-01-31 2.0
1950-02-28 2.0
1950-03-31 1.0
1950-04-30 2.0
1950-05-31 0.0
1950-06-30 0.0
我想重新索引 passin 从每月到分钟喜欢这样:
1950-01-31 00:00:00 2.0
1950-01-31 00:01:00 2.0
1950-01-31 00:02:00 2.0
1950-02-28 00:03:00 2.0
.
.
.
1950-06-30 00:00.00 0.0
1950-06-30 00:01.00 0.0
1950-06-30 00:02.00 0.0
1950-06-30 00:03.00 0.0
.
.
我的意思是例如在这种情况下对应于 1950-01-31 的值是 2.0,它会扩展到该月的每一分钟并连续
嗨,谢谢,我遇到了麻烦,我严格要求该值在所属的月份内,例如,如果我使用 s.resample('T').ffill() 我有这在我的结果系列中:
2018-03-31 23:24:00 2.0
2018-03-31 23:25:00 2.0
2018-03-31 23:26:00 2.0
2018-03-31 23:27:00 2.0
...
2018-04-01 23:31:00 2.0
2018-04-01 23:32:00 2.0
2018-04-01 23:33:00 2.0
2018-04-01 23:34:00 2.0
那个月 2018-04 的每一分钟都必须是 0.0,而不是我使用 s.resample('T').ffill() 得到 2.0。恢复需要从该月的第一分钟到最后一分钟以来将月度值传递到相应月份的分钟数的系列。 (对不起我的英语)
IIUC:
设置
s = pd.Series([2, 2, 1, 2, 0, 0], pd.date_range('1950-01-31', periods=6, freq='M'))
广播和reindex
您似乎只拍摄了前 4 分钟。所以我创建了一个时间增量数组,范围从 0 到 3 分钟。
d = np.arange(4).astype('timedelta64[m]')
s.reindex((s.index.values[:, None] + d).ravel(), method='ffill')
1950-01-31 00:00:00 2
1950-01-31 00:01:00 2
1950-01-31 00:02:00 2
1950-01-31 00:03:00 2
1950-02-28 00:00:00 2
1950-02-28 00:01:00 2
1950-02-28 00:02:00 2
1950-02-28 00:03:00 2
1950-03-31 00:00:00 1
1950-03-31 00:01:00 1
1950-03-31 00:02:00 1
1950-03-31 00:03:00 1
1950-04-30 00:00:00 2
1950-04-30 00:01:00 2
1950-04-30 00:02:00 2
1950-04-30 00:03:00 2
1950-05-31 00:00:00 0
1950-05-31 00:01:00 0
1950-05-31 00:02:00 0
1950-05-31 00:03:00 0
1950-06-30 00:00:00 0
1950-06-30 00:01:00 0
1950-06-30 00:02:00 0
1950-06-30 00:03:00 0
dtype: int64
捕捉每一分钟,照@Wen的建议去做
s.resample('T').ffill()
我有一个 pandas 这种形式的系列:
1950-01-31 2.0
1950-02-28 2.0
1950-03-31 1.0
1950-04-30 2.0
1950-05-31 0.0
1950-06-30 0.0
我想重新索引 passin 从每月到分钟喜欢这样:
1950-01-31 00:00:00 2.0
1950-01-31 00:01:00 2.0
1950-01-31 00:02:00 2.0
1950-02-28 00:03:00 2.0
.
.
.
1950-06-30 00:00.00 0.0
1950-06-30 00:01.00 0.0
1950-06-30 00:02.00 0.0
1950-06-30 00:03.00 0.0
.
.
我的意思是例如在这种情况下对应于 1950-01-31 的值是 2.0,它会扩展到该月的每一分钟并连续
嗨,谢谢,我遇到了麻烦,我严格要求该值在所属的月份内,例如,如果我使用 s.resample('T').ffill() 我有这在我的结果系列中:
2018-03-31 23:24:00 2.0
2018-03-31 23:25:00 2.0
2018-03-31 23:26:00 2.0
2018-03-31 23:27:00 2.0
...
2018-04-01 23:31:00 2.0
2018-04-01 23:32:00 2.0
2018-04-01 23:33:00 2.0
2018-04-01 23:34:00 2.0
那个月 2018-04 的每一分钟都必须是 0.0,而不是我使用 s.resample('T').ffill() 得到 2.0。恢复需要从该月的第一分钟到最后一分钟以来将月度值传递到相应月份的分钟数的系列。 (对不起我的英语)
IIUC:
设置
s = pd.Series([2, 2, 1, 2, 0, 0], pd.date_range('1950-01-31', periods=6, freq='M'))
广播和reindex
您似乎只拍摄了前 4 分钟。所以我创建了一个时间增量数组,范围从 0 到 3 分钟。
d = np.arange(4).astype('timedelta64[m]')
s.reindex((s.index.values[:, None] + d).ravel(), method='ffill')
1950-01-31 00:00:00 2
1950-01-31 00:01:00 2
1950-01-31 00:02:00 2
1950-01-31 00:03:00 2
1950-02-28 00:00:00 2
1950-02-28 00:01:00 2
1950-02-28 00:02:00 2
1950-02-28 00:03:00 2
1950-03-31 00:00:00 1
1950-03-31 00:01:00 1
1950-03-31 00:02:00 1
1950-03-31 00:03:00 1
1950-04-30 00:00:00 2
1950-04-30 00:01:00 2
1950-04-30 00:02:00 2
1950-04-30 00:03:00 2
1950-05-31 00:00:00 0
1950-05-31 00:01:00 0
1950-05-31 00:02:00 0
1950-05-31 00:03:00 0
1950-06-30 00:00:00 0
1950-06-30 00:01:00 0
1950-06-30 00:02:00 0
1950-06-30 00:03:00 0
dtype: int64
捕捉每一分钟,照@Wen的建议去做
s.resample('T').ffill()