[英]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')
創建了一個沒有方法asof
的GroupBy
對象。 如果您只是使用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.