如何解决连接.LAS文本文件,删除可变数量的标题行,然后另存为文本
我在堆栈上找到了该问题的解决方案的变种,但仍然似乎无法弄清为什么我的用例不起作用。
我要连接的大量.LAS文件。这些是具有相似格式的基于列的文本文件。
文字示例:
cipheredText= [B@2d612431
keySpec=javax.crypto.spec.SecretKeySpec@fffe956d
Key=3OF/L6XHck3imIRO9q8yi/Dr8+h6cMw99/21zMlByuo=
我想在第一列中添加文件名(在这种情况下为“ 01-01”),然后在〜ASCII MD行下方合并数据。
即如果我只有一个文件,数据将如下所示:
# Produced by RMS 12
~VERSION
VERS . 2 :CWLS Log Ascii Standard - Version 2
WRAP . NO :One line per depth step
DLM . SPACE :Delimiting character (SPACE,TAB or COMMA)
~WELL
# Keyword.Unit Data Type Information
# ------------ --------- -------------------------------
WELL . C-34B :WELL
STRT .U.S. ft 53.8099 :First index value
STOP .U.S. ft 16129.8099 :Last index value
STEP .U.S. ft 0.5000 :Step of index
NULL . -999.25 :NoValue
FLD . :FIELD
COMP . :COMPANY
CTRY . :COUNTRY
DATE . :DATE DD/MM/YYYY
SRVC . :SERVICE COMPANY
LOC . :LOCATION
PROV . :PROVINCE
UWI . :UNIQUE WELL ID
X .U.S. ft 664504.000 :X-coordinate of Well Head
Y .U.S. ft 5959656.990 :Y-coordinate of Well Head
RKB .U.S. ft 83.3200 :RKB
WATER_DEPTH .U.S. ft 0.0000 :Seabed or ground level
~PARAMETER
# Keyword.Unit Value Description
# ------------ --------- -------------------------------
~CURVE
# Name.Unit Curve Description
# --------- -----------------
MD .U.S. ft :1 Index
ZoneLog_2018_JAO. :2
~ASCII MD ZoneLog_2018_JAO
53.8099 -999.25
54.3099 -999.25
54.8099 -999.25
55.3099 -999.25
55.8099 -999.25
我尝试使用以下脚本来完成此操作(Import multiple csv files into pandas and concatenate into one DataFrame):
Well Name MD _ZoneLog_JAO
01-01A 5000 9
01-01A 5001 9
01-01A 5002 10
01-01B 4999 9
01-01B 5000 9
01-01B 5001 10
01-01C 4856 8
01-01C 4857 9
01-01C 4859 10
这将创建一个名为“ Merged_FFM15_ZoneLogs.txt”的输出文件,这种文件可以使我到达那里,但是格式看起来有些奇怪。
import pandas as pd
import os
import glob
merged_files = glob.glob("*.las") #creates a list of all las files
data = [] # pd.concat takes a list of dataframes as an agrument
for LAS in merged_files:
frame = pd.read_csv(LAS,skiprows=37)
frame['filename'] = os.path.splitext(LAS) [0]
data.append(frame)
merge = pd.concat(data,ignore_index=True) #dont want pandas to try an align row indexes
merge.to_csv("Merged_FFM15_ZoneLogs.txt",index=False)
print(merge.columns)
print(merge.shape)
我不确定为什么索引会像这样结束。我认为这可能与一个伪造文件有关,但是由于我看起来像1000,所以我不确定如何找到它?也许这与不规则分隔符有关?我有点茫然。
它似乎也只能处理少量文件,而不是我需要合并的1000个文件。我发现文件大小的一种解决方案是在64位python而不是32位选项上运行它。这是唯一的方法吗?
在一个完美的世界中,我将只能在最终文件中保留某些列,然后也可以过滤掉某些行(即_ZONE_JAO列中具有-999.25的行)。在这段代码的各种尝试中,我遇到了“内存错误”和Index([u'-0.0000 -999.25 ',u'0.0000 -999.25 ',u'filename',u'~ASCII MD ZoneLog_2018_JAO'],dtype='object')
(81456352,4)
错误。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。