2014-09-04 40 views
2

我有兩個不同長度的數據幀。我想提取兩個數據幀中'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的兩個數據幀到結束,所以可以繪製出關於「KEY2」(y軸)關於「KEY1」(x軸)的差異

我該如何做到這一點?

+0

所以,你要像'數據1 [data.key1 == data2.key1]',反之亦然? – EdChum 2014-09-04 19:49:08

+0

是的,但是我的len(data1)和len(data2)是不一樣的。 – amehta 2014-09-04 19:50:08

+0

確定更新了我的答案,您可以使用'isin'來過濾掉df行,我已經添加了虛擬數據來說明 – EdChum 2014-09-04 19:53:39

回答

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 
+0

其他列有類似的命名'鍵',所以我實際上想維護兩個單獨的數據框,以便我可以繪製差異。 – amehta 2014-09-04 19:46:50

相關問題