簡體   English   中英

Python - Pandas - 合並兩個具有不同時間戳頻率的 DataFrame

[英]Python - Pandas - Merge two DataFrame with difference timestamp frequencies

我有兩個數據框: - 第一個有一個帶有秒或亞秒時間步長的時間戳列, - 第二個有一個帶有 1 分鍾時間步長的時間戳列。

現在很明顯,如果數據時間間隔相同,由於數據頻率不同,兩個數據幀將具有不同的大小。

我想使用例如更高頻率(即最長)的數據幀將它們合並到一個數據幀中,並以這樣的方式將它們放在旁邊(水平)另一個以獲得當前時間戳的正確數據。 這意味着最低頻率的數據幀數據將根據當前的分鍾數據值重復自己。

我希望下面的例子能讓事情更清楚:

數據框 1

|--------------------------|------------------|
|        datetime          |     ValueDF1     |
|--------------------------|------------------|
| 2019-12-11 12:00:16.599  |       1          |
|--------------------------|------------------|
| 2019-12-11 12:00:16.17   |       2          |
|--------------------------|------------------|
| 2019-12-11 12:00:17.11   |       3          |
|--------------------------|------------------|

數據框 2

|--------------------------|------------------|
|        datetime          |     ValueDF2     |
|--------------------------|------------------|
| 2019-12-11 12:00         |       4          |
|--------------------------|------------------|

合並

|--------------------------|------------------|-----------------|
|        datetime          |     ValueDF1     |    ValueDF2     |
|--------------------------|------------------|-----------------|
| 2019-12-11 12:00:16.599  |       1          |        4        |    
|--------------------------|------------------|-----------------|
| 2019-12-11 12:00:16.17   |       2          |        4        |
|--------------------------|------------------|-----------------|
| 2019-12-11 12:00:17.11   |       3          |        4        |
|--------------------------|------------------|-----------------|

有什么建議? 提前致謝。

假設 'datetime' 列都是 Pandas 日期時間格式,我們可以去掉 df1['datetime'] 的秒數並使用這個新字段進行合並。

df1['datetime_min'] = pd.to_datetime([dt.datetime.strftime(d, "%Y-%m-%d %H:%M") for d in df1["datetime"]])

df1.merge(df2,left_on='datetime_min', right_on='datetime', how='left')

這對你有用嗎?

你有沒有檢查pd.merge_asof() 希望這可以幫助:

pd.merge_asof(df1.sort_values('datetime'), df2.sort_values('datetime'))

輸出:

                 datetime  ValueDF1  ValueDF2
0 2019-12-11 12:00:16.170         2         4
1 2019-12-11 12:00:16.599         1         4
2 2019-12-11 12:00:17.110         3         4

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM