簡體   English   中英

迭代計算每個不同元素的相應值

[英]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)

我想知道如何對所有不同的值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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM