如何基于指定条件创建Pandas统计列?论坛帖子数据集实操
解决方案:为论坛帖子DataFrame添加指定新列
针对需求中的两个新列,直接用Pandas实现如下:
1. 先导入依赖库
import pandas as pd import numpy as np
假设你的原始数据存储在DataFrame df 中,接下来分步处理:
2. 生成target_opening列
这个列逻辑简单,仅当当前帖子是开篇帖(thread_opening=1)且binary_target=1时取值1,其余为0:
# 通过布尔条件判断,直接转成整数类型 df['target_opening'] = ((df['binary_target'] == 1) & (df['thread_opening'] == 1)).astype(int)
3. 生成target_replies列
这个列需要先按线程分组统计符合条件的回复数,再将结果映射到对应线程的开篇帖行,其他行填0:
# 按线程名称分组,统计每个线程中非开篇帖且binary_target=1的数量 reply_stats = df.groupby('thread_name').apply( lambda group: len(group[(group['thread_opening'] == 0) & (group['binary_target'] == 1)]) ).reset_index(name='target_replies') # 将统计结果合并回原DataFrame,仅给开篇帖保留统计值,其余行设为0 df = df.merge(reply_stats, on='thread_name', how='left') df['target_replies'] = np.where(df['thread_opening'] == 1, df['target_replies'], 0)
执行完以上代码后,你的DataFrame就会和期望输出完全一致。
内容的提问来源于stack exchange,提问作者Connor95
相关产品推荐
相关产品推荐

