有没有办法使用pandas从单个数据框创建多个数据框?
使用pandas的groupby和列表推导来创建多个数据帧:
将所有拆分的数据帧存储在列表变量中,并通过它们的索引访问每个分离的数据帧。
DF = pd.DataFrame({'chr':["chr3","chr3","chr7","chr6","chr1"],'pos':[10,20,30,40,50],}) ans = [y for x, y in DF.groupby('chr')]
像这样访问分离的数据帧:
ans[0] ans[1] ans[len(ans)-1] # 这是最后一个分离的数据帧
像这样访问分离的数据帧的列值:
ansI_chr=ans[i].chr
这是一个很好的答案!
我认为你可以简化为`ans = [y for x, y in DF.groupby('chr', as_index=False)]`,因为y已经是一个数据帧。
这个答案不依赖于分割的数量,应该被投票为#1,只需要根据评论进行更新。
我相信`as_index=False`只影响聚合,所以你可以进一步简化为`ans = [y for x, y in DF.groupby('chr')]`。
问题出现的原因是用户想要从单个数据框创建多个数据框,根据给定的条件对数据进行切片。用户提供了一个使用 Pandas 的布尔索引的示例代码来实现这个目标。代码首先创建了一个包含销售额和 A 列的数据框,然后根据给定的销售额阈值 s 进行了切片,创建了两个新的数据框 df1 和 df2,一个包含大于等于阈值的行,另一个包含小于阈值的行。
解决方法是使用 Pandas 的布尔索引来实现切片。用户提供了两种方法,一种是使用大于等于阈值的条件切片,另一种是使用取反操作符 ~ 来取反条件切片。这两种方法都可以实现将数据框切片为两个新的数据框。
用户还提到了使用布尔索引和传统切片的性能差异问题。用户进行了测试,发现布尔索引稍微快一些,但差异不大。另外,用户还提到了第二种方法的优点,比如可以多次组合使用,可以重用条件切片,以及对于一些复杂的条件切片,第二种方法更易读。
用户还提出了一个关于将数据框按照销售额列的每个唯一值拆分成三个数据框的问题。其他用户提供了一个解决方法,即通过使用 for 循环遍历每个唯一值,并使用切片来拆分数据框。用户表示这个问题不难解决,不知道为什么还要提问。最后,用户还提到在评论中不能添加代码。
这篇文章介绍了一个使用 Pandas 切片来从单个数据框创建多个数据框的问题,并给出了两种解决方法。还讨论了使用布尔索引和传统切片的性能差异,以及如何根据列的每个唯一值拆分数据框的问题。