python - 计算 Pandas DataFrame 列中字符串中某个位置的字符频率
问题描述
我有一个与该df['columnA'].value_counts()
方法相关的问题和之前的帖子:Count frequency of values in pandas DataFrame column
以这个示例数据框为例:
fake_data = {'columnA': ['XAVY', 'XAVY', 'XAVY', 'XAVY', 'XAVY', 'AXYV', 'AXYV', 'AXYV', 'AXYV', 'AXYV', 'AXYV']}
df = pd.DataFrame(fake_data, columns = ['columnA'])
df
我正在尝试确定此列中字符串中每个位置的每个字母(X、A、V、Y)的频率。
在此示例中,位置 0 将是 54% A、46% X,位置 3 将是 46% Y、54% V......等等。
解决方案
首先将字符串转换为列表,然后展开为列。然后计算值并计算每个字母的出现百分比。
(
df.columnA.apply(list)
.apply(pd.Series)
.apply(pd.value_counts)
.apply(lambda x: x.div(x.sum()))
.fillna(0)
)
0 1 2 3
A 0.545455 0.454545 0.000000 0.000000
V 0.000000 0.000000 0.454545 0.545455
X 0.454545 0.545455 0.000000 0.000000
Y 0.000000 0.000000 0.545455 0.454545
推荐阅读
- azure - 如何在运行时用天蓝色连接字符串覆盖本地连接字符串?
- excel - 表/范围的电源查询
- c# - XMLSerializer - UTF-8 与 UTF-16 代码的问题
- android - 莱特币的 BitcoinJ 问题。Litecoin 可以使用哪个依赖项?
- javascript - 使用threejs动态更新平面/立方体顶点 - 更新矩阵时出现问题
- angular-material-5 - 如何使用 Angular 材质创建卡片?
- java - 如何在 Spring-Boot 中创建 DefaultMessageListenerContainer?
- swift3 - Swift 3 - 遍历泛型集合
- python - 当我通过 pythonw.exe 运行 python 程序时获取用户输入
- node.js - MySQL8.0 xdevapi node.js 不返回键,只返回值