![](/img/trans.png)
[英]Resample Pandas Dataframe based on a DatetimeIndex variable
[英]Pandas: resample a dataframe to match a DatetimeIndex of a different dataframe
我在單獨的pandas.dataframe
中有兩個時間序列,第一個 - series1
的條目較少,並且與第二個 - series2
的起始數據時間不同:
index1 = pd.date_range(start='2020-06-16 23:16:00', end='2020-06-16 23:40:30', freq='1T')
series1 = pd.Series(range(len(index1)), index=index1)
index2 = pd.date_range('2020-06-16 23:15:00', end='2020-06-16 23:50:30', freq='30S')
series2 = pd.Series(range(len(index2)), index=index2)
如何重新采樣 series2 以匹配series1
的DatetimeIndex
?
使用reindex
:
series2.reindex(series1.index)
Output:
2020-06-16 23:16:00 2
2020-06-16 23:17:00 4
2020-06-16 23:18:00 6
2020-06-16 23:19:00 8
2020-06-16 23:20:00 10
2020-06-16 23:21:00 12
2020-06-16 23:22:00 14
2020-06-16 23:23:00 16
2020-06-16 23:24:00 18
2020-06-16 23:25:00 20
2020-06-16 23:26:00 22
2020-06-16 23:27:00 24
2020-06-16 23:28:00 26
2020-06-16 23:29:00 28
2020-06-16 23:30:00 30
2020-06-16 23:31:00 32
2020-06-16 23:32:00 34
2020-06-16 23:33:00 36
2020-06-16 23:34:00 38
2020-06-16 23:35:00 40
2020-06-16 23:36:00 42
2020-06-16 23:37:00 44
2020-06-16 23:38:00 46
2020-06-16 23:39:00 48
2020-06-16 23:40:00 50
Freq: T, dtype: int64
一個簡單的重采樣不會產生正在尋找的結果嗎?
series2.resample('T').first()
如果您的目標是將重新采樣的時間戳合並回第一個數據集,您可以按如下方式執行此操作:
dt_map = {}
for group_label, group_series in series2.resample('T'):
dt_map.update({x:group_label for x in group_series.index})
# Overwrite the index
series2.index = series2.index.map(dt_map)
注意:如果要執行聚合 function,請堅持使用第一個選項。
IIUC,這就是你需要的:
series2[series2.index.isin(series1.index)]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.