簡體   English   中英

Python pandas asof 加入群組

[英]Python pandas asof join on groups

我有兩個 Pandas 數據框 X 和 Y,每個都包含過去一個月的日內價格和時間數據。 我想在 X 上運行 Y 的 asof join,即我們每次看到 X 的更新時都采用 Y 的現行價格。我想進行日內分析(因為隔夜效應)

我現在擁有的代碼是

Y_asof = Y.groupby('Date').apply(lambda x: x.asof(X.index))

但是,這會返回一個錯誤,指出

AttributeError: 'DataFrame' object has no attribute 'asof'

當我跑步時它正在工作

Y_asof = Y.apply(lambda x: x.asof(X.index))

X的樣本數據:

                                 Mid        Date
Time                                            
2015-09-15 13:02:03.000049  7.575392  2015-09-15
2015-09-15 13:02:06.000049  7.575521  2015-09-15
2015-09-15 13:02:08.000049  7.575392  2015-09-15
2015-09-15 13:02:14.000049  7.575521  2015-09-15
2015-09-15 13:02:15.000048  7.575649  2015-09-15

Y的樣本數據:

                                 Mid        Date
Time                                            
2015-09-15 12:00:00.443000  4.650894  2015-09-15
2015-09-15 12:00:00.443000  4.650899  2015-09-15
2015-09-15 12:00:06.321000  4.650894  2015-09-15
2015-09-15 12:00:06.322000  4.650884  2015-09-15
2015-09-15 12:00:10.839000  4.650894  2015-09-15

有人可以幫忙嗎? 非常感謝!

asof是一種 Series 方法,而不是 DataFrame 方法。 它適用於時間列:

In [11]: Y.groupby('Date').apply(lambda x: x["Time"].asof(X.index))
Out[11]:
Time                                 0                           1                           2                           3                           4
Date
2015-09-15  2015-09-15 12:00:00.443000  2015-09-15 12:00:00.443000  2015-09-15 12:00:06.321000  2015-09-15 12:00:06.322000  2015-09-15 12:00:10.839000

當您執行應用時,它跨越每一行(這是一個系列)。

我相信熊貓會拋出一個錯誤,因為Y.groupby('Date')創建了一個沒有方法asofGroupBy對象。 如果您只是使用groupby作為按日期排序的一種方式,則可以Y_asof = Y.sort('Date').apply(lambda x: x.asof(X.index))執行Y_asof = Y.sort('Date').apply(lambda x: x.asof(X.index))

pandas 0.19 有一個 asof join 由於您想要每個X最新Y

pd.merge(X, Y, on='time')

暫無
暫無

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

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