【Python学习】 - 如何将Pandas包中的groupby分组类型转换成DataFrame(一步就足够了)
?輸入:df_Grp,類型是pandas.core.groupby.generic.DataFrameGroupBy
我們先來學(xué)習(xí)一下如何將分組后的其中一個(gè)分組給轉(zhuǎn)換成DataFrame類型:
tmp = dict(list(df_Grp)) tmpname=[] tmpname = [i for i,j in df_Grp] #下面這行代碼其實(shí)就轉(zhuǎn)化成DataFrame了,但是只是一個(gè)數(shù)據(jù)的轉(zhuǎn)過去了,如果要實(shí)現(xiàn)所有的都轉(zhuǎn)過去,還是需要完成DataFrame的添加行操作,并且要reset_index ans_df = pd.DataFrame(tmp[tmpname[0]])#或者ans_df = df_Grp.get_group(tmpname[0]) #get_group函數(shù)返回一個(gè)DataFrame但是注意此時(shí)得到的index不是0~len-1這樣的順序,而是亂序的,也就是groupby之前的順序,所以需要再調(diào)用reset_indnex()函數(shù)進(jìn)行操作。
?
當(dāng)然,上面那一步只是做到了將其中的一個(gè)name進(jìn)行操作,而如果想把所有name都變回去,那就需要加一步:DataFrame的行插入。這一點(diǎn)可以使用concat函數(shù)完成,注意一定要有 ignore_index=True 這一步!
ans_df = pd.concat(tmp,ignore_index = True)對(duì)于concat函數(shù),注意第一個(gè)參數(shù)需要是一個(gè)list,而不能是其他類型,如果直接傳入的是多個(gè)DataFrame的名字的時(shí)候,注意不要在上面加引號(hào),因?yàn)檫@樣就不對(duì)了,就變成了字符串操作,不是list的操作了 ,這一點(diǎn)一定要非常注意,因?yàn)榉浅H菀自谶@個(gè)地方犯錯(cuò)。比如要df1和df2,那就ans_df = pd.concat( [df1,df2] ,ignore_index = True),而不是ans_df = pd.concat( ['df1','df2'] ,ignore_index = True)
?
?
?
知識(shí)點(diǎn)1:
reset_index(inplace=Ture)函數(shù)通過重新建立索引,可以得到DataFrame類型。
知識(shí)點(diǎn)2:
DataFrameGroupBy是可以用i,j 來獲取每一個(gè)元素的,i代表的是屬性名字,j獲取的是基本信息,是一個(gè)DataFrame類型
知識(shí)點(diǎn)3:
這種寫法:tmpname = [i for i,j in df_Grp],可以快速的得到一個(gè)list。
總結(jié)
以上是生活随笔為你收集整理的【Python学习】 - 如何将Pandas包中的groupby分组类型转换成DataFrame(一步就足够了)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 女生高考超常发挥查分后掩面痛哭 努力一年
- 下一篇: python选择表单_如何使用Pytho