python - 为 DataFrame 中的每个变量 x 计算一个变量 y 并添加相对频率
问题描述
我有:
df = pd.DataFrame({"A": [[55218],[55218],[55218],[55222]], "B": [[0],[0],[2],[1]]})
我想在“A”中为 55218 每隔 0、1 或 2 计数一次,并返回相对频率
我的预期输出是:
df_new = pd.DataFrame({"A": [[55218],[55218],[55218],[55222]],"B": [[0], [0], [2], [1]],"Count": [[2], [2], [1], [1]], "rel_frequ": [[0.67], [0.67], [0.33], [1]] })
解决方案
使用DataFrame.transform
,然后将列除以A
bySeries.value_counts
和的映射频率Series.map
:
df['Count'] = df.groupby(['A','B'])['A'].transform('size')
df['rel_frequ'] = df['Count'].div(df['A'].map(df['A'].value_counts()))
print (df)
A B Count rel_frequ
0 55218 0 2 0.666667
1 55218 0 2 0.666667
2 55218 2 1 0.333333
3 55222 1 1 1.000000
推荐阅读
- flutter - 用倒色进行颤振绘制
- scala - 在 Scala 中序列化函数时避免捕获 `this`
- c++ - [[maybe_unused]] 与结构化绑定?
- c# - gRPC C#服务器端,等到客户端关闭连接?
- xamarin.forms - Xamarin Forms 4.4 + 中是否仍需要此 ExportRenderer
- html - 如何在 .ts 文件中以角度创建按钮并添加点击事件
- javascript - 正则表达式 - 在最少两个字符之后
- python - 如何使用 API 获取 Reddit 提交的评论?
- windows - 识别文件是否未写入的程序
- python - (Python) 打印所有 '\' 转义字符