首页 > 解决方案 > 将各种大小的数据集拆分为单独的数据帧

问题描述

我是 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”值作为起点将每个测量值拆分为单独的数据帧,但我不确定如何遍历列或如何从每个列中提取其余列。

我认为一旦它们被拆分,我将能够删除设置行和元数据行并使用它们来命名数据框,这将为我提供一个不错的数据集。

标签: pythonpandas

解决方案


您可以使用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

推荐阅读