创建一个pandas计数数据框

时间:2015-06-26 15:12:40

标签: python pandas

我想创建一个包含两列的pandas数据框,第一列是我的一列的唯一值,第二列是唯一值的计数。

我看过许多帖子(例如here)描述如何获取计数,但我遇到的问题是当我尝试创建数据帧时,列值成为我的索引。

示例数据:df = pd.DataFrame({'Color': ['Red', 'Red', 'Blue'], 'State': ['MA', 'PA', 'PA']})。我想最终得到一个像:

这样的数据框
   Color Count
0   Red  2
1  Blue  1

我尝试过以下操作,但在所有情况下,索引最终都是Color,而Count是数据框中唯一的列。

尝试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:

df3 = df['Color'].value_counts()
df3 = pd.DataFrame(data=df3, index=range(df3.shape[0]))

尝试3:

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

5 个答案:

答案 0 :(得分:9)

另一种方法是使用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

答案 1 :(得分:2)

基本上等同于设置列名,而是使用重命名方法:

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

答案 2 :(得分:1)

一种可读的解决方案是使用to_framerename_axis方法:

res = df['Color'].value_counts()\
                 .to_frame('count').rename_axis('Color')\
                 .reset_index()

print(res)

  Color  count
0   Red      2
1  Blue      1

答案 3 :(得分:-1)

df=df.groupby('Color').count().reset_index()
df.columns=['Color','Count']

答案 4 :(得分:-2)

label_sentiment=[]
for i in range(len(score)):
   if score[i]==0:
       label_sentiment.append('NEUTRAL')
   elif score[i]>0:
       label_sentiment.append('POSITIVE')
   elif score[i]<0:
       label_sentiment.append('NEGATIVE')
data['label_sentiment']=label_sentiment

# #pythonT