如何用SQL或Python移除关联多行业的ID及其全部数据行?
解决方案:移除关联多行业的ID全量数据
SQL实现
方法1:子查询筛选排除ID
先通过分组找出关联多个行业的ID,再从原表中排除这些ID的所有记录:
SELECT * FROM your_table WHERE ID NOT IN ( SELECT ID FROM your_table GROUP BY ID HAVING COUNT(DISTINCT Industry) > 1 );
方法2:窗口函数直接筛选
用窗口函数计算每个ID对应的不同行业数量,直接过滤出数量为1的记录:
SELECT ID, Date, Industry FROM ( SELECT *, COUNT(DISTINCT Industry) OVER (PARTITION BY ID) AS industry_count FROM your_table ) t WHERE industry_count = 1;
Python(Pandas)实现
先计算每个ID的唯一行业数,再筛选出符合条件的ID对应的所有行:
import pandas as pd # 模拟示例数据 data = { 'ID': ['S000123', 'S000123', 'S000456', 'S000789'], 'Date': ['oct/1/22', 'oct/1/22', 'oct/4/22', 'oct/4/22'], 'Industry': ['Media', 'Education', 'Auto', 'Beverage'] } df = pd.DataFrame(data) # 计算每个ID的唯一行业数量 id_industry_count = df.groupby('ID')['Industry'].nunique() # 筛选出仅关联一个行业的ID valid_ids = id_industry_count[id_industry_count == 1].index # 过滤原数据 result_df = df[df['ID'].isin(valid_ids)] print(result_df)
运行后输出结果:
ID Date Industry 2 S000456 oct/4/22 Auto 3 S000789 oct/4/22 Beverage
内容的提问来源于stack exchange,提问作者PiCubed
相关产品推荐
相关产品推荐

