我想创建一个包含两列的pandas数据帧,第一列是我的一列的唯一值,第二列是唯一值的计数.
我已经看到很多帖子(例如这里)描述了如何获取计数,但我遇到的问题是当我尝试创建数据帧时,列值成为我的索引.
样本数据:df = pd.DataFrame({'Color': ['Red', 'Red', 'Blue'], 'State': ['MA', 'PA', 'PA']}).我想最终得到一个数据帧,如:
Color Count
0 Red 2
1 Blue 1
Run Code Online (Sandbox Code Playgroud)
我尝试过以下操作,但在所有情况下,索引最终都是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)
Run Code Online (Sandbox Code Playgroud)
尝试2:
df3 = df['Color'].value_counts()
df3 = pd.DataFrame(data=df3, index=range(df3.shape[0]))
Run Code Online (Sandbox Code Playgroud)
尝试3:
df4 = df.groupby('Color')
df4 = pd.DataFrame(df4['Color'].count())
Run Code Online (Sandbox Code Playgroud)
Phi*_*oud 10
另一种方法,使用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
Run Code Online (Sandbox Code Playgroud)