pandas 在panda Dataframe 中的group by和sum之后重命名列

bwitn5fc  于 2023-02-27  发布在  其他
关注(0)|答案(4)|浏览(457)

这是我的指挥小组

pdf_chart_data1 = pdf_chart_data.groupby('sell').value.agg(['sum']).rename(
    columns={'sum':'valuesum','sell' : 'selltime'}
)

我可以更改值的列名,但不能更改“sell”的列名。请帮助解决此问题。

wmvff8tz

wmvff8tz1#

不能重命名,因为它是index,可以添加as_index=False返回DataFrame或添加reset_index

pdf_chart_data1=pdf_chart_data.groupby('sell', as_index=False)['value'].sum()
                              .rename(columns={'sum':'valuesum','sell' : 'selltime'})

或者:

pdf_chart_data1=pdf_chart_data.groupby('sell')['value'].sum()
                          .reset_index()
                          .rename(columns={'sum':'valuesum','sell' : 'selltime'})
pu82cl6c

pu82cl6c2#

df = df.groupby('col1')['col1'].count()
df1= df.to_frame().rename(columns={'col1':'new_name'}).reset_index()
zf9nrax1

zf9nrax13#

如果你用相同的索引加入groupby,其中一个是nunique -〉number of unique items,另一个是unique-〉list of unique items,那么你会得到两列名为Sport。使用as_index=False,我可以使用rename重命名第二个Sport名称,然后将两个列表连接在一起,按sport降序排序,并显示105个sportcount。

grouped=df.groupby('NOC', as_index=False)
 Nsport=grouped['Sport'].nunique()\
     .rename(columns={'Sport':'SportCount'})
 Nsport=Nsport.set_index('NOC')

 country_grouped=df.groupby('NOC')
 Nsport2=country_grouped['Sport'].unique()

 df2=pd.concat([Nsport,Nsport2],  join='inner',axis=1).reindex(Nsport.index)
df2=df2.sort_values(by=["SportCount"],ascending=False)

print(df2.columns)
for key,item in df2.head(5).iterrows():
   print(key,item)
col17t5w

col17t5w4#

超快的方法

df = df.groupby('col1')['col1'].count() # returns a series which has a name
df1= df.to_frame('new_name') # <- overwrites the name of the series

相关问题