Python提取DataFrame中col1与col2的唯一组合及对应值
问题
现有如下DataFrame:
col1 col2 sum value_1 value_2 value_3 value_4 timestamp 2022-05-09 11:28:00 30 09 100 0 0 0 1 2022-05-09 11:28:01 30 11 105 0 0 1 0 2022-05-09 11:28:02 30 09 103 0 0 0 1 2022-05-09 11:28:03 50 11 109 0 1 1 0 2022-05-09 11:28:04 50 09 110 0 1 0 1 2022-05-09 11:28:05 50 09 101 0 1 0 1
需要忽略timestamp和sum列,提取col1与col2的唯一组合,且每个组合对应的value_1、value_2、value_3、value_4值保持一致,期望结果如下:
col1 col2 value_1 value_2 value_3 value_4 30 09 0 0 0 1 30 11 0 0 1 0 50 11 0 1 1 0 50 09 0 1 0 1
请问如何实现该需求?
实现方法
可以通过pandas的drop_duplicates()方法快速实现,具体步骤:
- 筛选出需要保留的列:
col1、col2以及所有value_*系列列 - 对筛选后的列执行去重操作,自动保留每个唯一组合的第一条记录
核心代码
import pandas as pd # 假设原始DataFrame名为df result = df[['col1', 'col2', 'value_1', 'value_2', 'value_3', 'value_4']].drop_duplicates()
额外验证(可选)
如果需要提前确认每个col1+col2组合对应的value列完全一致(避免存在同一组合对应不同value的情况),可以先做分组校验:
# 统计每个col1+col2组合下各value列的不同值数量 check_df = df.groupby(['col1', 'col2'])[['value_1', 'value_2', 'value_3', 'value_4']].nunique() # 若所有统计结果都是1,说明每个组合的value列完全一致 if (check_df == 1).all().all(): result = df[['col1', 'col2', 'value_1', 'value_2', 'value_3', 'value_4']].drop_duplicates() else: print("存在同一col1+col2组合对应不同value值的情况,请先处理数据")
内容的提问来源于stack exchange,提问作者EngGu
相关产品推荐
相关产品推荐

