迭代计算每个不同元素的相应值



假设我有以下数据帧:

d = {'col1':['a','b','c','a','a','b','c','c','c','c'],'col2':[0,1,1,0,1,1,1,1,0,1]}
df = pd.DataFrame(d)

对于col1中的每个不同值,我想计算百分比、计数和长度,我制作了一个新的数据帧,并进行了我提到的操作:

df1 = df[df['col1'].isin(["c"])]

查找c:的0/1百分比

df1['col2'].value_counts(normalize=True)*100

查找c:的计数0/1

df1['col2'].value_counts()

以及c:的长度

len(df1)

我想知道如何对所有不同的值abc迭代执行此操作,并制作一个新的数据帧来显示所有结果,而不是像在df1中那样每次都制作新的数据框?我知道我现在所做的并不是解决这个问题的最佳方式。

分组方式:

grouped = df.groupby(['col1'])['col2']
# percentage
grouped.value_counts(normalize=True)
# counts
grouped.value_counts()
# total count
grouped.size()

试用crosstab

out = pd.crosstab(df['col1'], df['col2'], normalize='index')*100
Out[89]: 
col2          0           1
col1                       
a     66.666667   33.333333
b      0.000000  100.000000
c     20.000000   80.000000

最新更新