如何将含210万条记录的DataFrame按in字段拆分两个子DataFrame?
DataFrame拆分实现方案
核心思路
先统计每个in值对应的唯一o_id数量,再根据这个数量将原DataFrame拆分成两部分:
- 第一部分:包含所有
in值仅对应1个唯一o_id的记录 - 第二部分:包含所有
in值对应多个不同o_id的记录
具体代码实现(基于Pandas)
import pandas as pd # 替换为你的210万条记录的原始DataFrame df = pd.DataFrame({ 'p_id': [1, 1, 1, 1], 'o_id': [1, 1, 2, 1], 'in': [1, 2, 2, 3] }) # 计算每个in值对应的唯一o_id数量 in_o_unique_count = df.groupby('in')['o_id'].nunique() # 拆分出第一个DataFrame:in仅对应唯一o_id的记录 df_single_o = df[df['in'].isin(in_o_unique_count[in_o_unique_count == 1].index)] # 拆分出第二个DataFrame:in对应多个o_id的记录 df_multi_o = df[df['in'].isin(in_o_unique_count[in_o_unique_count > 1].index)] # 查看结果 print("第一个DataFrame:") print(df_single_o) print("\n第二个DataFrame:") print(df_multi_o)
关键说明
- 用
groupby结合nunique的方式统计唯一值数量,是处理210万条大数据量的高效方案,避免逐行循环的低效率问题 isin()方法快速筛选符合条件的记录,保证拆分操作的性能
内容的提问来源于stack exchange,提问作者vishu9219
相关产品推荐
相关产品推荐

