在Pandas中使用value_counts之后,我想重新设置索引,但是第一个列的名称被替换为' index‘,每个列的名称都被推到右边
df = df[df['type']=='food']['fruit'].value_counts()
df = df.reset_index()
df
index fruit
0 apple 120
1 grape 110
2 orange 30
也许我可以使用df.columns来重命名列,但是是否有阻止“索引”替换第一列名称的方法呢?这就是我想要的
fruit number
0 apple 120
1 grape 110
2 orange 30
发布于 2022-11-07 08:40:15
可以使用rename_axis
重命名索引和reset_index
的name
参数。
(df[df['type']=='food']['fruit'].value_counts()
.rename_axis('fruit')
.reset_index(name='number'))
其他选项,使用groupby.agg
(df[df['type']=='food']
.groupby('fruit', as_index=False)
.agg(number=('fruit', 'count'))
)
产出:
fruit number
0 Apple 2
1 Banana 1
已使用的投入:
type fruit
0 food Apple
1 food Apple
2 food Banana
发布于 2022-11-07 08:45:29
您可以使用reset_index(name=...)
和pandas.DataFrame.rename
。
df = df[df['type']=='food']['fruit'].value_counts()
df = df.reset_index(name='number').rename(columns={'index': 'fruit'})
print(df)
输出:
fruit number
0 apple 2
1 grape 1
2 orange 1
输入DataFrame:
type fruit
0 food apple
1 food apple
2 food grape
3 food orange
更新基commnet:reset_index在哪里(name=.)申请?
value_counts()
的输出是pandas.Series
,在应用reset_index(name=...)
时,包含value_counts()
结果的名称更改列名,另一个列名是index
。
>>> df[df['type']=='food']['fruit'].value_counts()
apple 2
grape 1
orange 1
Name: fruit, dtype: int64
>>> df[df['type']=='food']['fruit'].value_counts().reset_index()
index fruit
0 apple 2
1 grape 1
2 orange 1
>>> df[df['type']=='food']['fruit'].value_counts().reset_index(name='number')
index number
0 apple 2
1 grape 1
2 orange 1
https://stackoverflow.com/questions/74349913
复制