Python 3.x 将文件转换为数据帧,然后对多个数据帧应用函数
我有三个文件well1.las、well2.las、well3.las(“.las”类似于“.txt”),我希望将它们转换为不同的数据帧(8x4),因为我稍后将对它们应用一些函数。 在它们里面有一个字符串“~a”,我想排除它,只保留日志名('DEPTH','GR','NPHI','RHOB')作为列名 我已经设法将las文件分离到一个数据帧中,但无法对所有数据帧都这样做。我该怎么做? 我认为如果我能把数据帧放在一个列表或dict中会更好,因为我需要用它们的值做一些计算 每个las文件如下所示:Python 3.x 将文件转换为数据帧,然后对多个数据帧应用函数,python-3.x,pandas,Python 3.x,Pandas,我有三个文件well1.las、well2.las、well3.las(“.las”类似于“.txt”),我希望将它们转换为不同的数据帧(8x4),因为我稍后将对它们应用一些函数。 在它们里面有一个字符串“~a”,我想排除它,只保留日志名('DEPTH','GR','NPHI','RHOB')作为列名 我已经设法将las文件分离到一个数据帧中,但无法对所有数据帧都这样做。我该怎么做? 我认为如果我能把数据帧放在一个列表或dict中会更好,因为我需要用它们的值做一些计算 每个las文件如下所示:
~A DEPTH GR NPHI RHOB
2869.6250 143.5306 0.1205 2.4523
2869.7500 143.9227 0.1221 2.4497
2869.8750 144.5697 0.1180 2.4564
2870.0000 145.3994 0.1128 2.4650
2870.1250 146.3611 0.1378 2.4239
2870.2500 147.3796 0.1535 2.3981
2870.3750 148.4387 0.1288 2.4387
2870.5000 149.5223 0.1195 2.4539
'''
''只需在
for
循环之前将数据制作成一个临时列表(data=[]
),每次迭代都会将read\u csv
的结果附加到该列表中。谢谢,@Valentino!现在我可以在“data”列表中看到我的数据框了。嗨,瓦伦蒂诺,关于你的问题,还有什么悬而未决的吗?sep='~A'
工作正常吗?它通常用于覆盖列分隔符,因此,如果要删除它,您可能需要应用不同的内容(在不更改的情况下读取它,然后重命名列,或者将文件读入内存并删除它,如果您使用StringIO
等将其传递给read_csv
)@jottbe不知道。LucasA似乎对我的建议很满意,不确定他是否还需要什么。太好了:-)那你为什么不写一个答案呢?只需在你的for
循环之前将数据列为一个临时列表(data=[]
),每次迭代都会将read\u csv
的结果附加到该列表中。谢谢,@Valentino!现在我可以在“data”列表中看到我的数据框了。嗨,瓦伦蒂诺,关于你的问题,还有什么悬而未决的吗?sep='~A'
工作正常吗?它通常用于覆盖列分隔符,因此,如果要删除它,您可能需要应用不同的内容(在不更改的情况下读取它,然后重命名列,或者将文件读入内存并删除它,如果您使用StringIO
等将其传递给read_csv
)@jottbe不知道。LucasA似乎对我的建议很满意,不确定他是否还需要什么。太好了:-)那你为什么不写一个答案呢?
dl = os.listdir(r"C:\Users\laguiar\Desktop\LASfiles")
for filename in dl:
if filename.endswith('.las'):
with open(filename) as f:
for l in f:
if l.startswith('~A'):
logs = l.split()[1:]
break
data = pd.read_csv(f, names=logs, sep='~A', engine='python')
df = data['DEPTH'].str.split(expand = True)
df = df.astype(float)
df.columns = logs