我想实现具有以下要求的特定连接操作:
我有一个以下格式的数据框,其中索引是datetime,我有0到N的列(本例中为9)
DF1:
0 1 2 3 4 5 6 7 8 9
2001-01-01 2 53 35 91 43 31 7 87 25 68
2001-01-02 12 97 86 59 51 7 75 25 6 40
2001-01-03 73 82 87 1 46 66 17 42 96 61
我还有另一个数据框,其中包含为每个日期时间索引选择的列,即值为0到N:
0
2001-01-01 9
2001-01-02 5
2001-01-03 4
我想选择第一个数据帧的基础值,其中
index df1 = index df2
columns df1 = value df2
例如,上述示例的结果应如下所示:
join(df1,df2)=
0
2001-01-01 68
2001-01-02 7
2001-01-03 46
答案 0 :(得分:3)
从NumPy的索引方法中获取的一些东西 -
vals = df1.values[np.arange(df1.shape[0]),df2[0].values]
df_out = pd.DataFrame(vals,index=df1.index)
答案 1 :(得分:3)
您可以使用lookup
:
print (df1.lookup(df1.index, df2.iloc[:,0]))
[68 7 46]
print (pd.DataFrame(df1.lookup(df1.index, df2.iloc[:,0]), index=df1.index))
0
2001-01-01 68
2001-01-02 7
2001-01-03 46
squeeze
的另一种解决方案:
print (pd.DataFrame(df1.lookup(df1.index, df2.squeeze()), index=df1.index))
0
2001-01-01 68
2001-01-02 7
2001-01-03 46