2015-06-26 31 views
4

我想創建一個有兩列的熊貓數據框,第一列是我的一列的唯一值,第二列是唯一值的計數。創建一個計數的熊貓數據框

我見過很多文章(如here),因爲它描述瞭如何獲取計數,但是我遇到的問題是當我嘗試創建數據幀時,列值成爲我的索引。

樣本數據:df = pd.DataFrame({'Color': ['Red', 'Red', 'Blue'], 'State': ['MA', 'PA', 'PA']})。我想用一個數據幀落得這樣的:

Color Count 
0 Red 2 
1 Blue 1 

我曾嘗試以下,但在所有情況下,指數最終顏色和伯爵是在數據幀的唯一列。

嘗試1:

df2 = pd.DataFrame(data=df['Color'].value_counts()) 
# And resetting the index just gets rid of Color, which I want to keep 
df2 = df2.reset_index(drop=True) 

嘗試2:

​​

嘗試3:

df4 = df.groupby('Color') 
df4 = pd.DataFrame(df4['Color'].count()) 

回答

7

另一種方式來做到這一點,利用value_counts

In [10]: df = pd.DataFrame({'Color': ['Red', 'Red', 'Blue'], 'State': ['MA', 'PA', 'PA']}) 

In [11]: df.Color.value_counts().reset_index().rename(columns={'index': 'Color', 0: 'count'}) 
Out[11]: 
    Color count 
0 Red  2 
1 Blue  1 
0
df=df.groupby('Color').count().reset_index() 
df.columns=['Color','Count'] 
2

本質上等效於設置列名,但使用重命名方法相反:

df.groupby('Color').count().reset_index().rename(columns={'State': 'Count'}) 
+0

我注意到一個小問題,這種方法:如果有兩個以上的列,那麼所有其他列將得到計數爲好。 – Tchotchke

+0

這取決於你想看到什麼。假設有兩行color = red的行,那麼對於每一列有兩個值,行的顏色=紅色。您始終可以明確選擇一列。 – mdurant