Skip to main content
 首页 » 编程设计

python之计算 Pandas DataFrame 列中字符串中某个位置的字符频率

2025年05月04日34duanxz

我有一个与 df['columnA'].value_counts() 方法和之前的帖子相关的问题:Count frequency of values in pandas DataFrame column

以 DataFrame 为例:

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