0

我有多个文本文件,并希望从其中的数据中执行快速绘图。我认为最快的方法是将它们转换为 python 中的数据帧。我的文字是这样的:

    text = """
# WELL TRACE FROM PETREL 
# WELL NAME:              WELL-1
# DEFINITIVE SURVEY:      mode
# WELL HEAD X-COORDINATE: 222220.36000000 (m)
# WELL HEAD Y-COORDINATE: 2222571.60000000 (m)
# WELL DATUM (KB, Kelly bushing, from MSL): 101.96000000 (ft)
# WELL TYPE:              OIL
# MD AND TVD ARE REFERENCED (=0) AT WELL DATUM AND INCREASE DOWNWARDS
# ANGLES ARE GIVEN IN DEGREES
# XYZ TRACE IS GIVEN IN COORDINATE SYSTEM UTM_Zone
# AZIM_TN: azimuth in True North 
# AZIM_GN: azimuth in Grid North 
# DX DY ARE GIVEN IN GRID NORTH IN m-UNITS
# DEPTH (Z, tvd_z) GIVEN IN ft-UNITS
#===============================================================================================================================================
      MD            X            Y            Z           TVD           DX          DY        AZIM_TN        INCL         DLS        AZIM_GN
#===============================================================================================================================================
 0.0000000000 265750.36000 2571571.6000 401.96000000 0.0000000000 0.0000000013 0.0000000028 359.09630147 0.0000000000 0.0000000000 0.0000000000
 50.000000000 265750.35746 2571571.6061 351.96000635 49.999993654 -0.002542220 0.0061465683 336.62630147 0.0500000000 0.1000000000 337.53000000
 100.00000000 265750.34983 2571571.6246 301.96005077 99.999949230 -0.010168880 0.0245862575 336.62630147 0.1000000000 0.1000000000 337.53000000
"""

答案不是我所期望的,因为所有数据都在一列中

如何将此文本中的列正确识别为df?

我目前的代码是:

import os
import pandas as pd
import re
from io import StringIO

dev_files = os.listdir('/content/sample_data/dev')
for dev_file in dev_files:
  dev_well_file = open('/content/sample_data/dev/{}'.format(dev_file),'r')
  #print(dev_well_file.readlines())
  df = pd.read_csv(StringIO(re.sub(r'[ +      ]', '', dev_well_file.read())),header=15, sep='\s{2,}', engine='python')
print(df)
print(df['MDXYZTVDDXDYAZIM_TNINCLDLSAZIM_GN'])
4

2 回答 2

0

像这样的东西怎么样:

splitted = text.split("\n")

columns = splitted[16].split()
data = map(str.split,splitted[18:-1])

pd.DataFrame(data, columns = columns).astype(float)
于 2021-02-11T09:30:24.620 回答
0

如何使用 pandas 读取数据read_csv()并跳过以#.

import io
import pandas as pd

df = pd.read_csv(io.StringIO(text), sep='\s+', skiprows=list(range(16))+[17])
于 2021-02-11T09:58:06.843 回答