pandas - 根据唯一值将数据帧切成许多较小的数据帧
问题描述
我有一个大数据框(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 的模块
谢谢你的帮助!
解决方案
您可以使用熊猫 groupby
例如:
df_dict = {key: title for key, title in df.copy().groupby('title', sort=False)}
它创建了一个 DataFrame 字典,每个字典包含所有列,并且只包含与每个唯一标题值相关的行。
推荐阅读
- c++ - 模棱两可的重载函数仅因参数的模板形参不同
- python - 如何让 Python 返回函数的抽象表达式并获取其中的参数?
- javascript - Laravel:节点模块不可用
- python - pygame 加载更改文件名的图像
- python - Pyspark:根据多个值的条件进行计数
- spring - Spring Application - 正在使用哪个日志框架?
- azure - Azure DNS CNAME 子域
- java - Java Spring Boot 中的 Firebase 上传
- rest - REST API 设计认证用户:/products 或 /
/产品 - firebase - Firebase 实时数据库比本地 MySQL 服务器慢