簡體   English   中英

Python - 如何將結果從 group by 傳遞到 Pivot?

[英]Python - how to pass a result from group by to Pivot?

我的目標是將數據透視函數應用於包含重復記錄的數據框。 我通過向數據框中添加一個唯一的列來解決它:

my_df['id_column'] = range(1, len(my_df.index)+1)

df_pivot = my_df.pivot(index ='id_column', columns = 'type', values = 'age_16_18').fillna(0).astype(int)

我想弄清楚如何在不刪除重復項或使用 pivot_table 的情況下將數據pivot應用於數據框? 首先按多列分組,然后將結果傳遞給數據透視函數。 我不確定如何在分組到樞軸后傳遞結果。

    year  category  state_name  type    is_state gender age_16_18 age_18_30
0   2001  Foreigners  CA       Convicts   0       M       8          5
1   2001  Indians     NY       Convicts   0       F       5          2 
2   2005  Foreigners  NY       Others     1       M       0          9
3   2009  Indians     NJ       Detenus    0       F       7          0

您正在嘗試什么並不完全清楚,但看看您是否可以從以下方法中獲得一些靈感。 您希望按哪些列分組?

import pandas
my_df = pandas.DataFrame( { 'year' : [2001, 2001, 2005, 2009] ,
                            'category' : ['Foreigners','Indians','Foreigners','Indians'] ,
                            'state_name': ['CA','NY','NY','NJ' ],
                            'type': ['Convicts', 'Convicts','Others','Detenus'],
                            'is_state' : [0,0,1,0] ,
                            'gender' : ['M','F','M','F'],
                            'age_16_18':[8,5,0,7],
                            'age_18_30' : [5,2,9,0] }, columns=[ 'year','category','state_name','type','is_state','gender','age_16_18','age_18_30'])

>>> my_df.pivot( columns = 'type', values = 'age_16_18' )
type  Convicts  Detenus  Others
0          8.0      NaN     NaN
1          5.0      NaN     NaN
2          NaN      NaN     0.0
3          NaN      7.0     NaN

>>> my_df['key'] = my_df.category.str.cat(my_df.gender)

>>> my_df.pivot( index='key', columns = 'type', values = 'age_16_18' )
type         Convicts  Detenus  Others
key
ForeignersM       8.0      NaN     0.0
IndiansF          5.0      7.0     NaN

暫無
暫無

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

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