python - 读取带有负数的文本文件时出现问题

标签 python pandas dataframe csv

文本文件: 我有一个包含超过 87,000 个数据点的文本文件。文本文件的格式如下:

  • X 坐标 ----- Y 坐标 ---------- 参数 1 ------ 参数 2--------
  • 2.744596610E-02 1.247197202E+00 7.121462841E-03 2.467938066E-05
  • 2.732558411E-02 1.242196291E+00 1.365028508E-02 6.262368697E-05
  • 2.713870635E-02 1.227254209E+00 1.958976965E-03-3.179617352E-06

由于前导 -(减号) 符号,两个以粗体突出显示的数字之间没有空格,因此生成的 csv/pandas 数据框会产生一些结果像下面这样。

输出:

| X Coordinate    | Y Coordinate    | Parameter 1     | Parameter 2     | 
| --------------  | --------------  | --------------- | ------------    |
| 2.744596610E-02 | 1.247197202E+00 | 7.121462841E-03 | 2.467938066E-05 |
| 2.732558411E-02 | 1.242196291E+00 | 1.365028508E-02 | 6.262368697E-05 |
| 2.713870635E-02 | 1.227254209E+00 | 1.958976965E-03-3.179617352E-06|  |

必填:

| X Coordinate    | Y Coordinate    | Parameter 1     | Parameter 2     | 
| --------------  | --------------  | --------------- | ------------    |
| 2.744596610E-02 | 1.247197202E+00 | 7.121462841E-03 | 2.467938066E-05 |
| 2.732558411E-02 | 1.242196291E+00 | 1.365028508E-02 | 6.262368697E-05 |
| 2.713870635E-02 | 1.227254209E+00 | 1.958976965E-03 |-3.179617352E-06 |

我对 python/pandas 很熟悉,因此任何编程技术都会有很大帮助。

最佳答案

import re

DATAPOINT = re.compile(r'-?\d{1}\.\d{9}E[+-]\d{2}')

data = []
with open("data.txt") as fp:
    next(fp) # Ignore header (1st line)
    for l in fp.readlines():
        data.append(DATAPOINT.findall(l))

df = pd.DataFrame(data, columns=['X Coordinate', 'Y Coordinate', 'Parameter 1', 'Parameter 2'])
>>> df
      X Coordinate     Y Coordinate      Parameter 1       Parameter 2
0  2.744596610E-02  1.247197202E+00  7.121462841E-03   2.467938066E-05
1  2.732558411E-02  1.242196291E+00  1.365028508E-02   6.262368697E-05
2  2.713870635E-02  1.227254209E+00  1.958976965E-03  -3.179617352E-06

关于python - 读取带有负数的文本文件时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68058307/

相关文章:

python - 基于另一个数据框生成 pandas 数据框

r - 如何在没有 NA 值的 data.frame 中选择行

python - 尝试使用 groupby 获取最常见的值并得到 IndexError

python - 如何混合tensorflow keras模型和变压器

python - Seaborn 将 kwargs 传递给 plt.boxplot()

python - Pyramid :设置内容类型以响应匹配接受 header ?

Python pandas 对 groupby 结果进行排序

python - 如何将 pandas 的 DataFrame 转换为 Spark 中的 DataFrame 或 LabeledPoint?

python-2.7 - 如何使用数组有选择地从数据框中复制行?

python - Raspberry Pi crontab 在启动时启动 py 脚本 -> 记录 : error mysql 2002 (can't connect to local server)