Python 3.x 将文件转换为数据帧,然后对多个数据帧应用函数

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文件如下所示:

我有三个文件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