[英]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.