我正在嘗試根據資料幀的時間頻率進行分組。我可以獲取所有列,而不僅僅是 group by 中的指定列嗎?
代碼:
df.columns = ['time', 'age', 'salary', 'amount','university', 'gender', 'place', 'education']
DF:
time age salary amount university gender place education
12/6/2021 24 33333 232323 SK M US BE
12/6/2021 24 33333 232323 SK M US BE
12/8/2021 30 23656 9496 SE F UK BARC
12/9/2021 34 65652 26266 DE M UK BTECH
12/6/2021 25 89893 2652 NK F GER BSC
12/6/2021 25 89893 2652 NK F GER BSC
12/8/2021 70 445464 78989 SE F UK BARC
12/9/2021 45 65656 225415 NK F GER BTECH
12/6/2021 29 5996 3232 NK M CAN BTECH
full_data = data.groupby([pd.Grouper(key='time', freq='4min'),'age', 'salary', 'amount','university']).size().reset_index(name='counts')
預期的:
time age salary amount university gender place education counts
12/6/2021 24 33333 232323 SK M US BE 2
12/8/2021 30 23656 9496 SE F UK BARC 1
12/9/2021 34 65652 26266 DE M UK BTECH 1
12/6/2021 25 89893 2652 NK F GER BSC 2
12/8/2021 70 445464 78989 SE F UK BARC 1
12/9/2021 45 65656 225415 NK F GER BTECH 1
12/6/2021 29 5996 3232 NK M CAN BTECH 1
上面代碼的結果只有 5 列。有沒有辦法獲取所有列
uj5u.com熱心網友回復:
第一個想法是按計數創建新列,然后按某些列洗掉重復項,例如:
data['counts'] = data.groupby([pd.Grouper(key='time', freq='4min'),'age', 'salary', 'amount','university'])['age'].transform('size')
df = data.drop_duplicates(['age', 'salary', 'amount','university'])
如果可能,請使用所有列,每組使用相同的值:
full_data = data.groupby([pd.Grouper(key='time', freq='4min'),'age', 'salary', 'amount','university', 'gender', 'place', 'education']).size().reset_index(name='counts')
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/376296.html
上一篇:對資料框中的列
下一篇:熊貓資料框列到單個單元格
