我有两个不同长度的数据框。我想提取出' key1'的值所在的数据。两个数据框都是相同的。
In [6]: data1['key1'][5:10]
Out[6]:
5 3701061.280649
6 3702854.401078
7 3706447.681452
8 3710048.323744
9 3713648.507167
Name: key1, dtype: float64
In [7]: data2['key1'][10:15]
Out[7]:
10 3735249.951436
11 3738850.242555
12 3742450.472855
13 3746051.017456
14 3749651.185752
Name: key1, dtype: float64
我基本上想要从每个data1和data2中得到两个数据帧,因此我可以为' key1'(' key1'(y轴)绘制差异; x轴)
我怎样才能做到这一点?
答案 0 :(得分:2)
您可以使用isin
,这会从其他df过滤掉列值中的列值,然后以相反的方式重复:
In [4]:
df = pd.DataFrame({'a':arange(10), 'b':randn(10)})
df1 = pd.DataFrame({'a':arange(2,12), 'b':randn(10)})
print(df)
print(df1)
a b
0 0 -0.255545
1 1 -1.550302
2 2 -0.825056
3 3 1.475839
4 4 0.059035
5 5 2.295766
6 6 1.604147
7 7 -1.877267
8 8 -0.462598
9 9 -1.347194
a b
0 2 -1.462567
1 3 -0.277680
2 4 -0.461539
3 5 1.094466
4 6 -1.086069
5 7 0.249207
6 8 2.613443
7 9 1.036450
8 10 -0.562149
9 11 -0.679488
In [6]:
df[df.a.isin(df1.a)]
Out[6]:
a b
2 2 -0.825056
3 3 1.475839
4 4 0.059035
5 5 2.295766
6 6 1.604147
7 7 -1.877267
8 8 -0.462598
9 9 -1.347194
In [7]:
df1[df1.a.isin(df.a)]
Out[7]:
a b
0 2 -1.462567
1 3 -0.277680
2 4 -0.461539
3 5 1.094466
4 6 -1.086069
5 7 0.249207
6 8 2.613443
7 9 1.036450