将熊猫系列连接到数据框后重新分配列名

时间:2020-05-15 12:50:15

标签: python pandas dataframe concatenation rename

我已经 级联 许多 Pandas系列” ,以创建一个数据框。

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 的输出是:

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']

我也想将索引命名为“大陆”。

有人可以给我一些建议吗?

3 个答案:

答案 0 :(得分:2)

相反,您的解决方案使用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'))

答案 1 :(得分:1)

您可以尝试一下。

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

使用df.rename_axis

为索引添加名称
df.rename_axis('Continent')

输出:

                  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

答案 2 :(得分:1)

尝试一下:

对于索引列标题:

df.index.name='Continent'

列名称:

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

希望有帮助。