データパイプライン構築をしている際に、ある列を除いて他の列の値が重複している事象がありました。その際に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
コメント