我有一个与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/