如何将分组数据存储在嵌套 for 循环中的单独数据框中

我已经有一个数据帧字典,我想循环字典的每个数据帧,并根据名为: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] = df

A[1]=df2

B={}

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]))


我想要这样的输出:(见图),

使用我的代码,每次迭代都会覆盖数据帧。所以我最终有三个数据框而不是五个。

https://img1.sycdn.imooc.com/652f92f10001b65a01790640.jpg

HUH函数
浏览 88回答 1
1回答

摇曳的蔷薇

这是你想要的吗?import pandas as pddata = {'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 = {}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 Size2  krish   19    L0  Jason   20    L2  Ronda   11    L4    Ron    6    L5  Harry    5    LM:     Name  Age Size0    Tom   20    M1   nick   21    M5    Kim    6    M1  Damon   12    M3  Kylie   13    MS:    Name  Age Size3  jack   18    S4  Kody    6    S对于 5 个数据框(在列表中),执行以下操作:import pandas as pddata = {'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 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 Size2  krish   19    L   Name  Age Size0   Tom   20    M1  nick   21    M5   Kim    6    M   Name  Age Size3  jack   18    S4  Kody    6    S    Name  Age Size0  Jason   20    L2  Ronda   11    L4    Ron    6    L5  Harry    5    L    Name  Age Size1  Damon   12    M3  Kylie   13    M
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python