按特殊阈值划分数据帧

2024-04-29 20:04:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我以数据帧为例:

name  age
Ashe   12
Ashe   13
Ashe   23
John   33
John   45
Karin  55
David  84
Zaki   34
Mano   45

我的阈值是我需要在不同的名称上划分它,就像我需要3个不同的名称一样,所以我需要输出为:

name  age
Ashe   12
Ashe   13
Ashe   23
John   33
John   45
Karin  55

第二个DF:

name  age
David  84
Zaki   34
Zaki   23
Zaki   35
Mano   45

我能做什么


Tags: 数据name名称dfage阈值johndavid
1条回答
网友
1楼 · 发布于 2024-04-29 20:04:03
from itertools import islice

def chunk(lst, size):
    lst = iter(lst)
    return iter(lambda: tuple(islice(lst, size)), ())

name_groups = list(chunk(df.name.unique(),3))
data = {}
for i, group in enumerate(name_groups):
    data[f'df{i}'] = df[df.name.isin(group)]

函数chunk将数组拆分为大小为n的块(在本例中为-3)
您可以在此处阅读更多内容:https://stackoverflow.com/a/22045226/13104290

name_groups包含一个元组列表,每个元组最多包含3个元素:
[('Ashe', 'John', 'Karin'), ('David', 'Zaki', 'Mano')]

因为我们发送了df.name.unique(),所以没有重复

现在我们需要动态地创建每个新的数据帧,我们将通过创建一个字典并每次添加一个新分区来实现这一点

字典现在包含两个数据帧:df0df1

data['df0']

    name    age
0   Ashe    12
1   Ashe    13
2   Ashe    23
3   John    33
4   John    45
5   Karin   55

data['df1']

    name    age
6   David   84
7   Zaki    34
8   Mano    45

相关问题 更多 >