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