首页 > 解决方案 > 根据唯一值将数据帧切成许多较小的数据帧

问题描述

我有一个大数据框(14,000 行)。这些列包括“title”、“x”和“y”以及其他随机数据。

对于一个特定的标题,我编写了一个代码,该代码基本上使用 x 和 y 值对该数据的子集进行分析(但细节对此并不重要)。

对于这个标题(类似于“部件号 Y1-17”),大约有 80 行。

目前,我只研究了如何让我的代码一次处理 1 个标题子集(即一组具有相同标题的行)。为此,我一直在使用我的大数据框制作一个较小的数据框:

df = pd.read_excel(r"mydata.xlsx")
a = df.loc[df['title'].str.contains('Y1-17')]

但是鉴于我需要对这些较小的数据集进行大约 180 个分析,我不想手动进行。

我的问题是,有没有办法通过唯一的“标题”值对数据进行切片来自动制作所有较小的数据框?我找到的所有帮助,似乎你需要指定“标题”来制作一个子集。我想对所有内容进行子集化,并且不想列出所有标题名称来执行此操作。

我搜索了很多,但没有找到任何东西,但是我是初学者,所以很可能我错过了一些非常基本的方法。

我不确定它是否重要信息,但我正在使用 pandas 和 numpy 的模块

谢谢你的帮助!

标签: pandasnumpydataframe

解决方案


您可以使用熊猫 groupby

例如:

df_dict = {key: title for key, title in df.copy().groupby('title', sort=False)}

它创建了一个 DataFrame 字典,每个字典包含所有列,并且只包含与每个唯一标题值相关的行。


推荐阅读