我已经在堆栈上找到了这个问题的各种解决方案,但似乎仍然无法理解为什么我的用例不起作用
我有大量要连接的.LAS文件。这些是具有类似格式的基于列的文本文件
文本示例:
# 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
我想将文件名(“在本例中为01-01”)添加到第一列,然后在~ASCII MD行下方包含数据
也就是说,如果我有一个以上的文件,数据会是这样的:
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
我已尝试使用下面的脚本来完成此(Import multiple csv files into pandas and concatenate into one DataFrame):
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)
这将创建一个名为“Merged_FFM15_ZoneLogs.txt”的输出文件,这样我就有了这个文件,但格式看起来有点奇怪
Index([u'-0.0000 -999.25 ', u'0.0000 -999.25 ',
u'filename', u'~ASCII MD ZoneLog_2018_JAO'],
dtype='object')
(81456352, 4)
我不知道为什么索引会这样结束。我认为这可能与一个伪造的文件有关,但由于我正在查看1000个文件,我不知道如何找到它?也许这和不规则的分隔符有关?我有点不知所措
它似乎只处理少量文件,而不是我需要合并的1000多个文件。我找到的一个解决文件大小的方法是在64位python上运行它,而不是在32位选项上运行它。这是唯一的办法吗
在一个完美的世界中,我只能在最终文件中保留某些列,然后还可以过滤掉某些行(即在_ZONE_JAO column中有-999.25行)。在我尝试过的各种代码中,我遇到了“内存错误”和TypeError: cannot concatenate object of type '<class 'pandas.io.parsers.TextFileReader'>'; only Series and DataFrame objs are valid
错误
目前没有回答
相关问题 更多 >
编程相关推荐