gpt4 book ai didi

python - Pandas 数据框基于列值拆分列表

转载 作者:行者123 更新时间:2023-12-01 00:45:07 25 4
gpt4 key购买 nike

我有一个很大的区域数据集,我想根据区域列表将数据帧拆分为多个数据帧。

示例:

regions         val1    val2
A 1 2
A 1 2
B 1 2
C 1 2
D 1 2
E 1 2
A 1 2

我想通过分组(A,E),(B,C,D)来分割上面的数据框

DF1:
regions val1 val2
A 1 2
A 1 2
E 1 2
A 1 2

DF2:
B 1 2
C 1 2
D 1 2

我通过手动指定 df[(df['regions'] == 'A') | (df['regions'] == 'E')] 来尝试此操作。我想避免在创建数据帧时手动指定这些区域代码。我对 Pandas 很陌生。有什么办法吗?

最佳答案

您可以创建 DataFrame 字典,以避免手动创建具有字典理解的 DataFrame 和 Series.isinboolean indexing用于过滤:

L =  [('A','E'), ('B','C','D')]

dfs = {'_'.join(x):df[df['regions'].isin(x)] for x in L}
print (dfs)
{'A_E': regions val1 val2
0 A 1 2
1 A 1 2
5 E 1 2
6 A 1 2, 'B_C_D': regions val1 val2
2 B 1 2
3 C 1 2
4 D 1 2}

要选择每个DataFrame,请使用键:

print (dfs['A_E'])
regions val1 val2
0 A 1 2
1 A 1 2
5 E 1 2
6 A 1 2

print (dfs['B_C_D'])
regions val1 val2
2 B 1 2
3 C 1 2
4 D 1 2
<小时/>

手动解决方案是:

df1 = df[df['regions'].isin(('A','E'))]
print (df1)
regions val1 val2
0 A 1 2
1 A 1 2
5 E 1 2
6 A 1 2

df2 = df[df['regions'].isin(('B','C','D'))]
print (df2)
regions val1 val2
2 B 1 2
3 C 1 2
4 D 1 2

关于python - Pandas 数据框基于列值拆分列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57035355/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com