import pandas as pd
import numpy as np
df1=pd.DataFrame(np.arange(25).reshape((5,5)),index=pd.date_range('2015/01/01',periods=5,freq='D')))
df1['trading_signal']=[1,-1,1,-1,1]
DF1
0 1 2 3 4 trading_signal
2015-01-01 0 1 2 3 4 1
2015-01-02 5 6 7 8 9 -1
2015-01-03 10 11 12 13 14 1
2015-01-04 15 16 17 18 19 -1
2015-01-05 20 21 22 23 24 1
和 df2
0 1 2 3 4
Date Time
2015-01-01 22:55:00 0 1 2 3 4
23:55:00 5 6 7 8 9
2015-01-02 00:55:00 10 11 12 13 14
01:55:00 15 16 17 18 19
02:55:00 20 21 22 23 24
如何从df1获取trading_signal的值并将其发送到df2。 我想要一个像这样的输出:
0 1 2 3 4 trading_signal
Date Time
2015-01-01 22:55:00 0 1 2 3 4 1
23:55:00 5 6 7 8 9 1
2015-01-02 00:55:00 10 11 12 13 14 -1
01:55:00 15 16 17 18 19 -1
02:55:00 20 21 22 23 24 -1
答案 0 :(得分:1)
您需要合并或加入。如果你合并,你需要reset_index,这比使用join更慢,内存效率更低。请阅读Joining a single index to a multi index上的文档:
版本0.14.0中的新功能。
您可以加入单个索引的DataFrame,其级别为a 多索引DataFrame。级别将匹配索引的名称 单索引帧与多索引的级别名称的关系 帧
如果要使用连接,则必须将df1的索引命名为Date
,以使其与第一级df2
的名称相匹配:
df1.index.names = ['Date']
df1[['trading_signal']].join(df2, how='right')
trading_signal 0 1 2 3 4
Date Time
2015-01-01 22:55:00 1 0 1 2 3 4
23:55:00 1 5 6 7 8 9
2015-01-02 00:55:00 -1 10 11 12 13 14
01:55:00 -1 15 16 17 18 19
02:55:00 -1 20 21 22 23 24
我有正当理由加入,如果你不明白这意味着什么,请阅读Brief primer on merge methods (relational algebra)。