python - 将各种大小的数据集拆分为单独的数据帧
问题描述
我是 Python 和熊猫的新手。我有一个从一些测量设备导出的 .csv 文件,它在一个 .csv 文件中为我提供了一天中进行的所有测量。我已经设法生成了一个相当整洁的数据框,但我无法解决。如何分开测量?
数据框的结构如下:
+-------------------------+-------------------+--------------------+-----------+------+-------------+------+--------------+
| SetupTitle | measurement_type | nan | nan | nan | nan | nan | nan |
| MetaData | TestRecord | measurement number | nan | nan | nan | nan | nan |
| DataName | voltage 1 | voltage 2 | current 1 | ... | | | data name 8 |
| DataValues | data 1 | ... | | | | | data 8 |
| ... | | | | | | | |
| hundreds of data points | | | | | | | |
| ... | | | | | | | |
| SetupTitle | measurement type | nan | nan | nan | nan | nan | nan |
| etc... | | | | | | | |
+-------------------------+-------------------+--------------------+-----------+------+-------------+------+--------------+
我想通过使用“SetupTitle”值作为起点将每个测量值拆分为单独的数据帧,但我不确定如何遍历列或如何从每个列中提取其余列。
我认为一旦它们被拆分,我将能够删除设置行和元数据行并使用它们来命名数据框,这将为我提供一个不错的数据集。
解决方案
您可以使用cumsum
来计算特定值的出现次数并将groupby
它们分开:
s = df[name_of_column].eq('SetupTitle').cumsum()
s
那么每当SetupTitle
你的列中有 a 时,值就会改变。您可以通过以下方式访问这些块:
# say we want to store them in a dict:
blocks = {}
for num_block, block in df.groupby(s):
# do whatever you want with the group
blocks[num_block] = block
推荐阅读
- swift - Xcode 错误:为 iOS 模拟器构建,但在为 iOS 构建的目标文件中链接
- git - 如何在我的仓库中存储敏感文件而不跟踪它?
- logging - 如何重用 log4j 掩码转换器?
- python - 应用拆分连接 Pandas DataFrame
- ms-access - 使用条件 MS 访问进行序列化的问题
- vue.js - 导航到页面并触发一些方法
- pine-script - Pine 脚本/外部数据替代
- javascript - 如何在 [Javascript, ES6] 中使用多个对象映射 API
- c# - 打印带有字符的字符串,周围添加了很多空格
- php - 使用 PHP 在 MySQL 中通过子查询获取原始价格和当前价格