我以一个DataFrame为例:
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
我该怎么办?
答案 0 :(得分:0)
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()
以来,没有重复项。
现在,我们需要动态创建每个新的数据帧,我们将通过创建一个字典并一次添加一个新分区来做到这一点。
词典现在包含两个数据帧df0
和df1
。
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