我是 Python 和 pandas 的新手。 我有一个从某些测量设备导出的 .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()
那么每次列中出现 SetupTitle
时,s
的值都会发生变化。您可以通过以下方式访问这些 block :
# 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
关于python - 将不同大小的数据集分割成单独的数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56598089/