[英]Counting the corresponding value for each distinct elements iteratively
假設我有以下數據框:
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)
我想知道如何對所有不同的值a
、 b
和c
迭代地執行此操作並創建一個新的數據幀來顯示所有結果,而不是像我在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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.