Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:来自group_by的新数据帧,在一行中有新索引_Python_Pandas_Dataframe_Group By - Fatal编程技术网

Python:来自group_by的新数据帧,在一行中有新索引

Python:来自group_by的新数据帧,在一行中有新索引,python,pandas,dataframe,group-by,Python,Pandas,Dataframe,Group By,我是Python新手,希望在编码方面更加高效 目前我有以下代码,计算每个城市的店铺数量(如果店铺仍然营业): top_20_cities = pd.DataFrame(data = shops[shops.Open == 'Open'].groupby('city').size().sort_values(ascending=False).head(20)).reset_index() top_20_cities.columns = ['City', 'Count'] 有没有可能把两条线放在一

我是Python新手,希望在编码方面更加高效

目前我有以下代码,计算每个城市的店铺数量(如果店铺仍然营业):

top_20_cities = pd.DataFrame(data = shops[shops.Open == 'Open'].groupby('city').size().sort_values(ascending=False).head(20)).reset_index()
top_20_cities.columns = ['City', 'Count']
有没有可能把两条线放在一条线上?我尝试了此操作,但出现错误:

top_20_cities = pd.DataFrame(data = shops[shops.Open == 'Open'].groupby('city').size().sort_values(ascending=False).head(20), columns = ['City', 'Count']).reset_index()
thx使用:

top_20_cities = (shops[shops.Open == 'Open']
                   .groupby('city')
                   .size()
                   .sort_values(ascending=False)
                   .head(20)
                   .rename_axis('City')
                   .reset_index(name='Count'))
另一种默认排序的解决方案:

top_20_cities = (shops.loc[shops.Open == 'Open', 'city']
                      .value_counts()
                      .head(20)
                      .rename_axis('City')
                      .reset_index(name='Count'))

如果你很高兴拥有
城市
而不使用大写字母C,你只需执行
.reset\u index(name='Count')