亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將分組數據存儲在嵌套 for 循環中的單獨數據框中

如何將分組數據存儲在嵌套 for 循環中的單獨數據框中

HUH函數 2023-10-18 16:09:31
我已經有一個數據幀字典,我想循環字典的每個數據幀,并根據名為:Size 的列對它們進行分組,然后將每組數據存儲在新的數據幀中 B. 我的問題是:對于每次迭代,B 將被更新的數據框替換。我想要所有可能的組的所有數據框。有人對如何做到這一點有任何想法嗎?小例子:data = {'Name':['Tom', 'nick', 'krish', 'jack','Kody','Kim'], 'Age':[20, 21, 19, 18,6,6],'Size':['M','M','L','S','S','M']} data2={'Name':['Jason', 'Damon', 'Ronda', 'Kylie','Ron','Harry'], 'Age':[20, 12, 11, 13,6,5],'Size':['L','M','L','M','L','L']} df = pd.DataFrame(data) df2=pd.DataFrame(data2)A={}A[0] = dfA[1]=df2B={}for x in range(0,2):    A[x]=A[x].groupby(["Size"])    KeysA=list(A[x].groups.keys())    display(len(KeysA))    for z in range(0, len(KeysA)):        B[z]= A[x].get_group(str(KeysA[z]))我想要這樣的輸出:(見圖),使用我的代碼,每次迭代都會覆蓋數據幀。所以我最終有三個數據框而不是五個。
查看完整描述

1 回答

?
搖曳的薔薇

TA貢獻1793條經驗 獲得超6個贊

這是你想要的嗎?


import pandas as pd


data = {'Name': ['Tom', 'nick', 'krish', 'jack', 'Kody', 'Kim'], 'Age': [20, 21, 19, 18, 6, 6],

        'Size': ['M', 'M', 'L', 'S', 'S', 'M']}

data2 = {'Name': ['Jason', 'Damon', 'Ronda', 'Kylie', 'Ron', 'Harry'], 'Age': [20, 12, 11, 13, 6, 5],

         'Size': ['L', 'M', 'L', 'M', 'L', 'L']}

df = pd.DataFrame(data)

df2 = pd.DataFrame(data2)

A = {}

A[0] = df

A[1] = df2

B = {}

new_df = pd.concat(A.values())

groups = new_df.groupby(["Size"])

for group in groups:

    B[group[0]] = group[1]


for k, v in B.items():

    print(f"{k}: {v}")

輸出:


L:     Name  Age Size

2  krish   19    L

0  Jason   20    L

2  Ronda   11    L

4    Ron    6    L

5  Harry    5    L

M:     Name  Age Size

0    Tom   20    M

1   nick   21    M

5    Kim    6    M

1  Damon   12    M

3  Kylie   13    M

S:    Name  Age Size

3  jack   18    S

4  Kody    6    S

對于 5 個數據框(在列表中),執行以下操作:


import pandas as pd


data = {'Name': ['Tom', 'nick', 'krish', 'jack', 'Kody', 'Kim'], 'Age': [20, 21, 19, 18, 6, 6],

        'Size': ['M', 'M', 'L', 'S', 'S', 'M']}

data2 = {'Name': ['Jason', 'Damon', 'Ronda', 'Kylie', 'Ron', 'Harry'], 'Age': [20, 12, 11, 13, 6, 5],

         'Size': ['L', 'M', 'L', 'M', 'L', 'L']}

df = pd.DataFrame(data)

df2 = pd.DataFrame(data2)

A = {}

A[0] = df

A[1] = df2

B = []

for key, value in A.items():

    groups = value.groupby(["Size"])

    for group in groups:

        B.append(group[1])


for x in B:

    print(x)

輸出:


    Name  Age Size

2  krish   19    L

   Name  Age Size

0   Tom   20    M

1  nick   21    M

5   Kim    6    M

   Name  Age Size

3  jack   18    S

4  Kody    6    S

    Name  Age Size

0  Jason   20    L

2  Ronda   11    L

4    Ron    6    L

5  Harry    5    L

    Name  Age Size

1  Damon   12    M

3  Kylie   13    M


查看完整回答
反對 回復 2023-10-18
  • 1 回答
  • 0 關注
  • 106 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號