2015-04-22 60 views
1

我有這個數據幀:如何根據特定的行值來計算列中值的數量?

 Outlook  Temperature PlayTennis Value 

0  Sunny   60   Yes   1 

1  Sunny   70   Yes   1 

2  Sunny   40   No   1 

3 Overcast   40   No   1 

4 Overcast   60   Yes   1 

5 Overcast   50   Yes   1 

6 Overcast   70   Yes   1 

7 Overcast   80   Yes   1 

8  Rain   65   No   1 

9  Rain   70   Yes   1 

,我想這

Outlook Yes No 

Sunny  2  1 

Overcast 4  1 

Rain  1  1 

不能確定使用基於晴天/多雲/雨

+0

歡迎來到Stack Overflow!通常希望在這裏你要麼顯示你寫過的代碼,要麼描述你爲解決問題所做的研究。由於您的問題目前正在撰寫,這聽起來像是對代碼的請求。你有沒有嘗試過與你分享? – skrrgwasme

回答

0

這是怎麼回事?

df.groupby('Outlook').apply(lambda g: g['PlayTennis'].value_counts()) 

,或者爲您的確切規格:

df.groupby('Outlook').apply(lambda g: g['PlayTennis'].value_counts()).unstack(1) 

甚至更​​短:

df.groupby('Outlook')['PlayTennis'].value_counts().unstack(1) 
0
計數yesses和NOS什麼命令

這裏有一些開始與:

forecasts = [ 
    ["sunny", "yes"], 
    ["sunny", "yes"], 
    ["sunny", "no"], 
    ["overcast", "no"], 
    # more forecasts ... 
] 
myForecasts = {} 
for forecast in forecasts: 
    if forecast[0] not in myForecasts: 
     myForecasts[forecast[0]] = [0, 0] 

    if forecast[1] == "yes": 
     myForecasts[forecast[0]][0] += 1 

    else: 
     myForecasts[forecast[0]][1] += 1 

print("Outlook | Yes | No") 
for myForecast in myForecasts: 
    print("{} | {} | {}".format(myForecast, myForecasts[myForecast][0], myForecasts[myForecast][1])) 

我好這有助於一些。下次請告訴我們你已經完成了功課。

+0

你能幫我用熊貓做這個嗎? – Parth

+0

對不起,我沒有熊貓經驗;你到底需要什麼幫助? – m0dem

0

你可以使用pd.pivot_table解決這個

In [88]: pd.pivot_table(df, index='Outlook', cols='PlayTennis', 
         values='Value', aggfunc='sum') 
Out[88]: 
PlayTennis No Yes 
Outlook 
Overcast  1 4 
Rain   1 1 
Sunny  1 2 

另外,還可以groupby你的d ata 'Outlook', 'PlayTennis'獲得計數並使用unstack('PlayTennis')

In [87]: df.groupby(['Outlook', 'PlayTennis']).size().unstack('PlayTennis') 
Out[87]: 
PlayTennis No Yes 
Outlook 
Overcast  1 4 
Rain   1 1 
Sunny  1 2 
相關問題