我有一个与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 ...等等。

最佳答案

也许这会有所帮助:

new_data = df.columnA.str.split('',n=4, expand=True).drop(0, axis=1)
stats = new_data.apply(pd.Series.value_counts)
stats = stats.apply(lambda x: (x/x.sum())*100).round(2).fillna(0)
print(stats)


输出量

    1      2    3     4
A   54.54 45.45 0     0
V   0     0     45.45 54.54
X   45.45 54.54 0     0
Y   0     0     54.54 45.45

关于python - 计算Pandas DataFrame列中字符串中某个位置的字符频率,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57736512/

10-13 03:53