【发布时间】:2019-08-12 17:38:04
【问题描述】:
我有两个形状相同的python数据框,例如:
df1 = pd.DataFrame(np.random.randn(3,2), index=np.arange(3), columns=['a','b'] )
df2 = pd.DataFrame(np.random.randint(0, high=3, size=(3,2)), index=np.arange(3), columns=['a','b'] )
print df1
a b
0 0.336811 -2.132993
1 -1.492770 0.278024
2 -2.355762 -0.894376
print df2
a b
0 1 2
1 0 2
2 2 1
我想使用 df2 中的值作为行索引来选择 df1 中的值并创建一个形状相同的新数据框。 预期结果:
print df3
a b
0 -1.492770 -0.894376
1 0.336811 -0.894376
2 -2.355762 0.278024
我尝试过使用 .loc,它适用于单列:
df3 = df1.loc[df2['a'], 'a']
print df3
0 -1.492770
1 0.336811
2 -2.355762
但我无法同时在所有列上使用 .loc 或 .iloc。 由于我正在处理大型数据帧,因此我想避免循环以优化性能。 有什么想法吗?
【问题讨论】:
标签: python pandas dataframe indexing