You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将value_counts()的结果追加至原始DataFrame?

如何将value_counts()的结果匹配追加到原始DataFrame?

我手头有这样一个DataFrame:

OpenHighLowClose
00.0012680.0012770.0012660.001271
10.0012680.0012690.0012650.001266
20.0012650.0012650.0012420.001254
30.0012530.0012710.0012440.001251
40.0012530.0012590.0012490.001257
50.0012570.0012600.0012410.001248

当我运行df["Open"].value_counts()时,得到各Open值的出现次数:

0.001253    2
0.001268    2
0.001265    1
0.001257    1
Name: Open, dtype: int64

我希望把这些计数结果作为新列Open_count追加到原始DataFrame中,最终得到如下格式的结果:

OpenHighLowCloseOpen_count
00.0012680.0012770.0012660.0012712
10.0012680.0012690.0012650.0012662
20.0012650.0012650.0012420.0012541
30.0012530.0012710.0012440.0012512
40.0012530.0012590.0012490.0012572
50.0012570.0012600.0012410.0012481

最简单的解决方法

你可以直接用Pandas的map()方法来实现这个需求,一行代码就能搞定:

df["Open_count"] = df["Open"].map(df["Open"].value_counts())

原理说明

df["Open"].value_counts()会返回一个Series,其中索引是Open列的唯一值,值是对应的出现次数。map()方法会遍历原始DataFrame的每一行Open值,去匹配这个Series的索引,然后把对应的次数赋值给新列的该行。这样就完美实现了每个Open值和它的出现次数一一对应。

处理浮点数精度问题(可选)

如果你的数据存在浮点数精度导致的匹配问题(比如看起来相同的数值因为小数位数存储差异被当成不同值),可以先对Open列做精度统一处理,再进行映射:

# 统一保留6位小数,根据你的数据调整位数
df["Open_count"] = df["Open"].round(6).map(df["Open"].round(6).value_counts())

内容的提问来源于stack exchange,提问作者Nazim Kerimbekov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:41:09