如何统计DataFrame某列值出现次数并将次数赋值给对应匹配行
DataFrame新增列统计指定列值的总出现次数
错误原因说明
你之前的df["count"] = df[df[column]==my_dict.keys]写法存在两处问题:
my_dict.keys是字典的内置方法,需要加括号调用才能获取所有键值- 布尔索引返回的是匹配成功的行子集,维度和原DataFrame不一致,无法直接赋值给新列
实现方案
方案1:沿用你预先构造计数字典的思路
通过map方法将字典的value映射到对应行:
# 第一步:生成日期-出现次数字典 count_dict = df['Date'].value_counts().to_dict() # 第二步:映射生成新列 df['Occurrence'] = df['Date'].map(count_dict)
方案2:更简洁的内置方法实现
无需手动构造字典,直接用groupby+transform一行实现:
df['Occurrence'] = df.groupby('Date')['Date'].transform('count')
完整测试代码
import pandas as pd # 构造样例DataFrame data = { "Date": ["2020-04-20", "2020-04-23", "2020-04-22", "2020-04-22", "2020-04-22"], "Place_code": [282, 301, 291, 422, 422] } df = pd.DataFrame(data, index=[14, 16, 18, 20, 21]) # 执行新增列逻辑 df['Occurrence'] = df.groupby('Date')['Date'].transform('count') # 调整列顺序和你期望的输出一致 df = df[["Date", "Occurrence", "Place_code"]] print(df)
运行后输出结果和你预期的完全一致。
内容的提问来源于stack exchange,提问作者Eval
相关产品推荐
相关产品推荐

