首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据列中的重复值拆分DataFrame

根据列中的重复值拆分DataFrame
EN

Stack Overflow用户
提问于 2018-01-26 01:23:34
回答 1查看 499关注 0票数 2

以下是我的起始数据帧:

代码语言:javascript
复制
StartDF = pd.DataFrame({'A': {0: 1, 1: 1, 2: 2, 3: 4, 4: 5, 5: 5, 6: 5, 7: 5}, 'B': {0: 2, 1: 2, 2: 4, 3: 2, 4: 2, 5: 4, 6: 4, 7: 5}, 'C': {0: 10, 1: 1000, 2: 250, 3: 100, 4: 550, 5: 100, 6: 3000, 7: 250}})

我需要基于列A和B中的重复值创建单个数据帧的列表,因此它应该如下所示:

代码语言:javascript
复制
df1 = pd.DataFrame({'A': {0: 1, 1: 1}, 'B': {0: 2, 1: 2}, 'C': {0: 10, 1: 1000}}) 
df2 = pd.DataFrame({'A': {0: 2}, 'B': {0: 4}, 'C': {0: 250}})
df3 = pd.DataFrame({'A': {0: 4}, 'B': {0: 2}, 'C': {0: 100}})
df4 = pd.DataFrame({'A': {0: 5}, 'B': {0: 2}, 'C': {0: 550}})
df5 = pd.DataFrame({'A': {0: 5, 1: 5}, 'B': {0: 4, 1: 4}, 'C': {0: 100, 1: 3000}}) 
df6 = pd.DataFrame({'A': {0: 5}, 'B': {0: 5}, 'C': {0: 250}})

我已经看到了许多解释如何删除重复项的答案,但我需要保留重复的值,因为无论列A和B中是否存在重复项,列C中的信息通常都会在行之间有所不同。所有行数据都需要保留在新的数据帧中。

另外请注意,起始数据帧(StartDF)的长度将发生变化,因此每次运行此命令时,创建的单个数据帧的数量将是可变的。最终,我需要将新创建的数据帧打印到它们自己的csv文件中(我知道如何做这一部分)。只需要知道如何以一种优雅的方式将数据从原始数据帧中分离出来。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-26 01:26:05

您可以使用groupby,遍历每个组,并使用列表理解来构建列表。

代码语言:javascript
复制
df_list = [g for _, g in df.groupby(['A', 'B'])]

代码语言:javascript
复制
print(*df_list, sep='\n\n')

   A  B     C
0  1  2    10
1  1  2  1000

   A  B    C
2  2  4  250

   A  B    C
3  4  2  100

   A  B    C
4  5  2  550

   A  B     C
5  5  4   100
6  5  4  3000

   A  B    C
7  5  5  250
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48448647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档