如何删除重复的行并获得列中最受欢迎的3个元素的百分比值



我有以下数据帧

A  B
x  q
x  q
x  k
y  w
y  h
y  w
z  e
z  e
z  e
z  c

我如何才能实现这样的目标(下面数据帧的结构可能不正确(:

A          B
x   (66% q) (33% k) 
y   (66% w) (33% h)
z   (75% e) (25% c)

有人能帮我吗?我是蟒蛇初学者。

我更喜欢crosstab

pd.crosstab(df['A'],df['B'],normalize='index')
Out[352]: 
B     c     e         h         k         q         w
A                                                    
x  0.00  0.00  0.000000  0.333333  0.666667  0.000000
y  0.00  0.00  0.333333  0.000000  0.000000  0.666667
z  0.25  0.75  0.000000  0.000000  0.000000  0.000000
data = pd.DataFrame({"A":["x","x","x","y","y","y"],"B":["q","q","k","w","h","w"]})
regrouped = data.groupby(["A","B"],as_index=False)["B"].size()
regrouped / regrouped.groupby("A").sum()
# output
A  B
x  k    0.333333
q    0.666667
y  h    0.333333
w    0.666667
dtype: float64

这将接近您的需求,您可以像您一样调整:

df.value_counts(normalize=True).mul(100).reset_index()

最新更新