DataFrameで重複行の総数を確認する方法

データパイプライン構築をしている際に、ある列を除いて他の列の値が重複している事象がありました。その際にDataFrameのduplicated()とsum()を使用しました。

サンプルコード

import pandas as pd

# 辞書型のリストでデータを作成
dict_list = [{'store_num':'00001', 'category_l':'100', 'category_m':'10', 'category_s':'1', 'item_num':'AAA', 'qty':10, 'delivery_day':'2024-05-01', 'delivery_cnt':1, 'rgdt':'2024-04-29'},
             {'store_num':'00001', 'category_l':'100', 'category_m':'10', 'category_s':'1', 'item_num':'AAA', 'qty':100, 'delivery_day':'2024-05-01', 'delivery_cnt':1, 'rgdt':'2024-04-29'},
             {'store_num':'00002', 'category_l':'200', 'category_m':'20', 'category_s':'1', 'item_num':'BBB', 'qty':20, 'delivery_day':'2024-05-01', 'delivery_cnt':1, 'rgdt':'2024-04-29'},
             {'store_num':'00002', 'category_l':'200', 'category_m':'20', 'category_s':'1', 'item_num':'BBB', 'qty':200, 'delivery_day':'2024-05-01', 'delivery_cnt':1, 'rgdt':'2024-04-29'},
             {'store_num':'00002', 'category_l':'200', 'category_m':'20', 'category_s':'1', 'item_num':'BBB', 'qty':2000, 'delivery_day':'2024-05-01', 'delivery_cnt':1, 'rgdt':'2024-04-29'},
             {'store_num':'00003', 'category_l':'100', 'category_m':'10', 'category_s':'1', 'item_num':'CCC', 'qty':30, 'delivery_day':'2024-05-01', 'delivery_cnt':1, 'rgdt':'2024-04-29'}]

df = pd.DataFrame(dict_list)

# 列のリストを作成
# column_list = df.columns.tolist()

df_duplicated_sub_sum = df.duplicated(subset= ['store_num', 'category_l', 'category_m', 'category_s', 'item_num', 'delivery_day', 'delivery_cnt', 'rgdt'], keep=False).sum()
print(type(df_duplicated_sub_sum))
print(df_duplicated_sub_sum)

作成したDataFrame

store_num	category_l	category_m	category_s	item_num	qty	delivery_day	delivery_cnt	rgdt
0 00001 100 10 1 AAA 10 2024-05-01 1 2024-04-29
1 00001 100 10 1 AAA 100 2024-05-01 1 2024-04-29
2 00002 200 20 1 BBB 20 2024-05-01 1 2024-04-29
3 00002 200 20 1 BBB 200 2024-05-01 1 2024-04-29
4 00002 200 20 1 BBB 2000 2024-05-01 1 2024-04-29
5 00003 100 10 1 CCC 30 2024-05-01 1 2024-04-29

<class 'pandas.core.frame.DataFrame'>

結果

	store_num	category_l	category_m	category_s	item_num	qty	delivery_day	delivery_cnt	rgdt
0 00001 100 10 1 AAA 10 2024-05-01 1 2024-04-29
1 00001 100 10 1 AAA 100 2024-05-01 1 2024-04-29
2 00002 200 20 1 BBB 20 2024-05-01 1 2024-04-29
3 00002 200 20 1 BBB 200 2024-05-01 1 2024-04-29
4 00002 200 20 1 BBB 2000 2024-05-01 1 2024-04-29

<class 'pandas.core.frame.DataFrame'>
<class 'numpy.int64'>
5

コメント

タイトルとURLをコピーしました