簡體   English   中英

熊貓,比較具有不同形狀的數據框列

[英]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 ab depth1depth2列,如果它們匹配,我想將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

如何使用熊貓來做到這一點?

編輯: depth1depth2列已排序

您的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM