我对R更熟悉,但我想知道是否有办法在熊猫中做到这一点 . 我想从我的一个dataframe列创建唯一值的计数,然后将包含这些计数的新列添加到我的原始数据框 . 我尝试过几种不同的东西 . 我创建了一个pandas系列,然后使用value_counts方法计算计数 . 我试图将这些值合并回原始数据帧,但我要合并的键是在索引(ix / loc)中 . 任何建议或解决方案将不胜感激
Color Value
Red 100
Red 150
Blue 50
我想要回报一些类似的东西
Color Value Counts
Red 100 2
Red 150 2
Blue 50 1
4 回答
例如,
请注意
transform('count')
忽略NaN . 如果要计算NaN,请使用transform(len)
.对于匿名编辑器:如果您在使用
transform('count')
时收到错误,可能是由于您的Pandas版本太旧了 . 以上工作与熊猫版本0.15或更新 .我最初的想法是使用列表理解,如下所示,但正如评论中指出的那样,这比
groupby
和transform
方法慢 . 我将留下这个答案来证明 WHAT NOT TO DO :对于具有多个列的DataFrame,@ unutbu的方法变得复杂,这使得代码更加简单 . 如果您正在处理一个小数据框,这会更快(见下文),但除此之外,您应该使用 NOT 使用它 .
另一种选择:
此选项将为您提供一个具有重复计数值的列,对应于“颜色”列中每个值的频率 .
df['Counts'] = df.Color.groupby(df.Color).transform('count')
您可以对任何系列执行此操作:将其自行分组并调用
transform('count')
: