[英]Pandas, compare data frame columns with different shapes
我有兩個形狀不同的數據框,如下所示:
data = [[0.0, 0.5, 1.0, 1.5, 2.0, 2.5],['a','b','c','d','e','f']]
data = np.matrix(data).T
a = pd.DataFrame(data, columns=['depth1', 'label'])
b = pd.DataFrame([0, 0.5, 0.5, 0.5, 0.5, 1.0, 1.5, 1.5, 1.5, 2.0, 2.0, 2.5], columns=['depth2'])
>>> a
depth1 label
0 0.0 a
1 0.5 b
2 1.0 c
3 1.5 d
4 2.0 e
5 2.5 f
>>> b
depth2
0 0.0
1 0.5
2 0.5
3 0.5
4 0.5
5 1.0
6 1.5
7 1.5
8 1.5
9 2.0
10 2.0
11 2.5
我想比較數據depth2
a
和b
depth1
和depth2
列,如果它們匹配,我想將label
列附加到數據框b
。 所需的輸出如下:
>>> new_df
depth2 label
0 0.0 a
1 0.5 b
2 0.5 b
3 0.5 b
4 0.5 b
5 1.0 c
6 1.5 d
7 1.5 d
8 1.5 d
9 2.0 e
10 2.0 e
11 2.5 f
如何使用熊貓來做到這一點?
編輯: depth1
和depth2
列已排序
您的depth1
是一種對象類型,因此您可以使用:
a.depth1 = a.depth1.astype(float)
>>> pd.merge(a, b, left_on='depth1', right_on='depth2', how='right').drop('depth1', axis=1)
label depth2
0 a 0.0
1 b 0.5
2 b 0.5
3 b 0.5
4 b 0.5
5 c 1.0
6 d 1.5
7 d 1.5
8 d 1.5
9 e 2.0
10 e 2.0
11 f 2.5
合並 :
In [120]: a.depth1 = pd.to_numeric(a.depth1)
In [122]: b.merge(a,how='left',right_on='depth1',left_on='depth2').drop('depth1',1)
Out[122]:
depth1 label
0 0.0 a
1 0.5 b
2 0.5 b
3 0.5 b
4 0.5 b
5 1.0 c
6 1.5 d
7 1.5 d
8 1.5 d
9 2.0 e
10 2.0 e
11 2.5 f
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.