簡體   English   中英

將 pandas 系列連接到 dataframe 后重新分配列名

[英]Reassigning column names after concatenating pandas series into a dataframe

我將許多Pandas 系列串聯在一起,以創建dataframe。

datasize = Reducedset['estimate'].groupby(level=0).apply(lambda x:x.count())
datasum = Reducedset['estimate'].groupby(level=0).apply(lambda x:x.sum())
datamean = Reducedset['estimate'].groupby(level=0).apply(lambda x:x.mean())
datastd = Reducedset['estimate'].groupby(level=0).apply(lambda x:x.std())
df = pd.concat([datasize,datasum,datamean,datastd],axis=1)

df的output為:

df
               estimate      estimate      estimate      estimate
Asia                  5  2.898666e+09  5.797333e+08  6.790979e+08
Australia             1  2.331602e+07  2.331602e+07           NaN
Europe                6  4.579297e+08  7.632161e+07  3.464767e+07
North America         2  3.528552e+08  1.764276e+08  1.996696e+08
South America         1  2.059153e+08  2.059153e+08           NaN

但是,我想按以下順序將列重命名為: ['size', 'sum', 'mean', 'std']

我還想將該索引命名為“大陸”。

任何人都可以就如何做到這一點給我任何建議嗎?

相反,您的解決方案使用GroupBy.agg然后DataFrame.rename_axis

所以改變:

datasize = Reducedset['estimate'].groupby(level=0).apply(lambda x:x.count())
datasum = Reducedset['estimate'].groupby(level=0).apply(lambda x:x.sum())
datamean = Reducedset['estimate'].groupby(level=0).apply(lambda x:x.mean())
datastd = Reducedset['estimate'].groupby(level=0).apply(lambda x:x.std())
df = pd.concat([datasize,datasum,datamean,datastd],axis=1)
df.columns = ['size', 'sum', 'mean', 'std']

至:

Reducedset['estimate'] = pd.to_numeric(Reducedset['estimate'], errors='coerce')

df = (Reducedset.groupby(level=0)['estimate']
                .agg(['count','sum','mean','std'])
                .rename(columns={'count':'size'})
                .rename_axis('Continent'))

或者:

Reducedset['estimate'] = pd.to_numeric(Reducedset['estimate'], errors='coerce')

df = (Reducedset.groupby(level=0).agg(size =('estimate', 'count'),
                                      sum=('estimate', 'sum'),
                                      mean=('estimate', 'mean'),
                                      std =('estimate', 'std'))
                 .rename_axis('Continent'))

你可以試試這個。

df.columns = ['size', 'sum', 'mean', 'std']

使用df.rename_axis將名稱添加到索引

df.rename_axis('Continent')

Output:

                  size        sum         mean         std       
Continent               
Asia                  5  2.898666e+09  5.797333e+08  6.790979e+08
Australia             1  2.331602e+07  2.331602e+07           NaN
Europe                6  4.579297e+08  7.632161e+07  3.464767e+07
North America         2  3.528552e+08  1.764276e+08  1.996696e+08
South America         1  2.059153e+08  2.059153e+08           NaN

嘗試這個:

對於索引列標題:

df.index.name='Continent'

對於列名:

df.columns = ['size', 'sum', 'mean', 'std']

希望能幫助到你..

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM