[pandas] 20. pd.mergeでDataFrameの複数の列で同じ値をもつ行のみを抽出

Pandas

はじめに

pandasのmergeで複数の列で同じ要素をもつ行のみを抽出する方法を説明する。mergeを用いる。

解説

モジュールのインポート

データの生成

データには、下記記事で用いたscikit-imageのregionprops_tableで作成したDataFrameを用いる。

[scikit-image] 68. ラベリングした領域のデータをregionprops_tableによりpandasのDataFrameで取得する(skimage.measure regionprops_table)
scikit-imageのregionprops_tableでラベリングした領域の情報を取得できるregionpropsのデータをpandasのDataFrameにする。

データフレーム1

labelareacentroid-0centroid-1equivalent_diameter
01183435715.264430
12492846425.028661
232211728316.774562
344812610124.747287
454762817324.618327
562212825216.774562
672283247817.038152
784584021324.148369
894224838323.179885
91024474817.625846
10112257538416.925688
11122217714216.774562
12133439150620.897875
1314731888530.508001
14152219630216.774562
151622111115816.774562
161722112938616.774562
171822113021516.774562
18192211314616.774562
192039816133722.511094
202146816628224.410574
212222116316516.774562
222322117121116.774562
232422117138116.774562
242522118741916.774562
25262212013116.774562
262722120733516.774562
27282212148616.774562
282922122323516.774562
293046425419024.306031
303122125024416.774562
313222125131516.774562
323322126012116.774562
333422126715416.774562
343597928736335.305828
35362212721916.774562
363722127733216.774562
37382212924716.774562
383922129330616.774562
394022130114716.774562
40412253031016.925688
41424813267624.747287
424322133021216.774562
434422134730616.774562
444522137421616.774562
45462213827016.774562
46472213853016.774562
4748188393415.471556
484948840345024.926711
495022139348316.774562
505122139537816.774562
515222140323816.774562
525322141948216.774562
535422344116916.850294
545541845439823.069767
555622345418916.850294
565722145625016.774562
575822146333416.774562
585922147110416.774562
596022147729516.774562
606122148124516.774562
616222148445316.774562
626324950250017.805523

データフレーム2

labelareacentroid-0centroid-1equivalent_diameter
0143282922074.233286
12578735727.128075
2318311846948.283554
3413082510040.809280
4518345838348.323093
5663174928.344561
6713429314941.336273
789419150134.613847
891876898648.873279
9105939630227.477828
101160612938527.777386
111260813021427.823185
12136021304627.685560
1314122616233739.509387
1415122616628239.509387
151659316316527.477828
161761117021027.891744
171864617038028.679483
181961118641827.891744
19205932013127.477828
202160620633527.777386
21225932148627.477828
2223137123623941.780515
2324359926715967.693346
2425474028034177.686263
252624272882455.589139
262712863257540.464627
272860133021227.662555
282959334730627.477828
2930136438822641.673718
30316173826928.028357
313213243881941.058119
3233284540446660.186099
333459339537827.477828
3435132644817941.089118
3536117445439838.662427
3637134546824741.382450
373861046333327.868910
383959347110427.477828
394061047629527.868910
404159348445327.477828
414261250049827.914559

mergeによる結合

mergeのonにおいて、on=[‘centroid-0′,’centroid-1’]のようにリストでカラム名を指定すれば下記のようにcentroid-0とcentroid-1が等しい行のみのDataFrameを得ることができる。

label_xarea_xcentroid-0centroid-1equivalent_diameter_xlabel_yarea_yequivalent_diameter_y
0152219630216.7745621059327.477828
12146816628224.41057415122639.509387
22222116316516.7745621659327.477828
3262212013116.7745622059327.477828
4282212148616.7745622259327.477828
54322133021216.7745622860127.662555
64422134730616.7745622959327.477828
75122139537816.7745623459327.477828
85541845439823.06976736117438.662427
95922147110416.7745623959327.477828
106222148445316.7745624159327.477828

参考

[pandas] 17. DataFrameの結合(merge)
pandasのDataFrameを横方向に結合する(merge())について説明する。
pandas.DataFrame.merge — pandas 2.1.0 documentation

コメント