【问题标题】:converting a multiple space delimited file to CSV using python 2.7 with Pandas?使用带有 Pandas 的 python 2.7 将多个空格分隔的文件转换为 CSV?
【发布时间】:2021-08-02 14:41:00
【问题描述】:

我有多个问题要尝试使用这个文件来解决,但我最关心的是尝试将这个文件转换为标准 CSV 文件,该文件的字段由字段之间的可变数量的空格分隔没有 1000 行天才级代码。我知道一种方法,就像几年前我在以前的项目中所做的那样,通过设置类似于 VB 中旧的 left$、mid$ 和 right$ 函数的函数来从行中选择特定字符我很感兴趣,因为数据定义得很好并且解析得很好,也就是说,每一列一直都是相同的大小,所以我可以通过使用这些函数来抓取标题行来选择列的字段名称,然后使用相同的函数逐行使用mid$()将数字数据作为字符串提取,通过在每个写入的字符串之间添加“,”将其写入另一个文件,将字符串转换回浮点数,然后我得到了我的带有标题的 CSV 文件。但是哇,就是这么麻烦和丑陋——我想用 Pandas 让它更优雅、简洁和锐利。

这是数据文件前几行的 sn-p - 我有数百个要处理。在实际文件中还有几十列,这只是一个示例,演示了字段之间的可变空格作为分隔符。

日期………………………………CH4。 ......................H2O
2021-04-01......................01:47:45.407.......2.0063472018E+00...... ....1.2005321188E+00...
2021-04-01......................01:47:46.336.......2.0063472018E+00...... ....1.2005321188E+00...
2021-04-01......................01:47:47.244.......2.0063472018E+00...... ....1.2025918742E+00...
2021-04-01......................01:47:49.049.......2.0059096902E+00...... ....1.2025918742E+00...

我还需要 tp 将 DATE 和 TIME 列解析为时间戳对象,我一直在尝试从 panda read_csv(parse_dates[[0,1]]) 中做到这一点,这几乎可以工作。我需要绘制每个系列的 x 轴标签的日期……但这是另一个帖子的另一个问题,哈哈。

提前感谢您的任何帮助!

约翰·雷恩赫2o

【问题讨论】:

  • 首先你为什么使用 Python 2.7?它本身有一些问题,已被弃用
  • 我在 3 年前编写了原始代码,这就是我们仪器上的内容
  • 实际上这仍然是他们与仪器一起提供的东西
  • 它不会让我尝试,它说我需要 1500 点或其他东西来添加该标签
  • 我的意思是理论上我可以自己在仪器上安装 python 3 并使用它

标签: python pandas python-2.7 csv io


【解决方案1】:

使用 Pandas,将分隔符指定为空格(假设您的示例已将空格替换为点)。接下来指定skipinitialspace=True。日期和时间列可以转换为单个datetime64 类型:

import pandas as pd

df = pd.read_csv('input.txt', delimiter=' ', skipinitialspace=True, parse_dates=[['DATE', 'TIME']])

print(df)
print(df.dtypes)

这会给你:

                DATE_TIME       CH4       H2O
0 2021-04-01 01:47:45.407  2.006347  1.200532
1 2021-04-01 01:47:46.336  2.006347  1.200532
2 2021-04-01 01:47:47.244  2.006347  1.202592
3 2021-04-01 01:47:49.049  2.005910  1.202592

DATE_TIME    datetime64[ns]
CH4                 float64
H2O                 float64

【讨论】:

    猜你喜欢
    • 2020-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-03
    • 2021-06-02
    • 2021-05-22
    • 1970-01-01
    • 2019-03-13
    相关资源
    最近更新 更多