Поиск значений в нескольких текстовых файлах

Я новичок в кодировании на питоне. Мне нужна помощь в чтении нескольких файлов .txt.

У меня есть около 50 файлов .txt, каждый из которых содержит 30 столбцов.

Я ищу значение в столбце 25 и получаю соответствующее значение в столбце 1.

Это должно быть для всех файлов в каталоге.

Заранее спасибо.

Текущий код:

import glob
import os
import numpy as np
import csv
import matplotlib.pyplot as plt
file_list = glob.glob('*.txt')
for file_path in data:
   for i in range(250,300,50):
    First_start_pcls=5500 # rows
    First_end_pcls=6000 #rows
for d in file_list:
    a_s=(d[First_start_pcls:First_end_pcl,1])
    b_s=(d[First_start_pcls:First_end_pcl,25])

Однако я поражен отсюда.

Мне нужно знать значение, например x>-72 & X<-73. между 5500:6000 рядами а затем выведите столбцы 1 (а), 25 (в)

текстовый файл выглядит так.

0 0.100002 0.100005 0.1 750 0 0.15 150 0 0 0.09999 5000 10 -1.79126e-06 -9.70263e-10 0.285642 -0.0212535 0 0 1.0251 0.00229463 0.00061384 -1.39956e-06 0 0.00168796 -79.2124 0.000385773 0.00109869 0 0 180
1 0.100375 0.100805 0.100233 750.028 3.25521e-06 0.149993 150 8.43446e-11 3.86358e-14 0.099039 5000 10 -26.1624 -0.201879 0.477011 0.142304 0 -0.00478525 4.66682e-10 0.489863 0.0755384 7.18662e-05 0.000464599 0.0328732 38.385 0.000387414 0.0010954 0 0 180.043
2 0.100732 0.102105 0.105489 750.106 2.79018e-06 0.149986 150 9.00251e-10 8.79657e-13 0.0981785 5000 10 -0.00916317 -0.193042 0.477412 0.150787 0 -0.0620785 3.08304e-10 1.92367 0.28177 0.000263186 0.00183184 0.0332253 39.4411 0.000388996 0.00109228 0 0 180.085
3 0.101075 0.103434 0.1177 750.224 6.97545e-06 0.149979 150 3.1313e-09 4.85265e-12 0.0973999 5000 10 -3.72894e-06 -0.21107 0.476546 0.148985 0 -0.0820207 7.45346e-10 2.27915 0.375781 0.000542299 0.00339836 0.0324755 36.5965 0.000390519 0.00108931 0 0 180.126
4 0.101405 0.104825 0.132947 750.376 1.95313e-05 0.149972 150 7.05902e-09 1.5288e-11 0.0966955 4999.99 10 -1.55684e-09 -0.230125 0.475581 0.146907 0 -0.104142 1.89863e-09 2.28998 0.409257 0.000881221 0.00511384 0.0316808 33.5859 0.000391987 0.00108649 0 0 180.166
5 0.101722 0.106308 0.14629 750.554 4.13876e-05 0.149965 150 1.27143e-08 3.58097e-11 0.0960581 4999.99 10 -6.68377e-13 -0.248602 0.474587 0.145348 0 -0.136107 4.71837e-09 2.19423 0.41199 0.00125702 0.00695662 0.0309066 30.6545 0.0003934 0.00108381 0 0 180.205



Добро пожаловать в stackoverflow.com. что ты пробовал? мы не предоставляем код здесь. мы помогаем устранять проблемы

CAPSLOCK 06.04.2019 22:13

Привет Джио, спасибо за ответ. Я добавил свой текущий код.

vika1989 06.04.2019 22:32

можно ли использовать панд?

CAPSLOCK 06.04.2019 22:35

Я могу использовать, но не очень знаком. Питон для меня новый.

vika1989 06.04.2019 22:36

Можете ли вы показать образец входного файла? работает ли код до того момента, как вы написали?

CAPSLOCK 06.04.2019 22:41

С помощью этого кода я могу получить одно значение столбца, не соответствующее значению столбца.

vika1989 06.04.2019 22:48
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
3
6
91
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий
#change this if you have a header and use the proper separator according to your text file
df= pd.read_csv('inputfile.txt', sep = " ", header=None) 

#this if you actually have a column named 'x', for which you want to check if the values are between 73 and 74.
df=df[df['x'].between(73,74)].loc[5499:5999] 
#if your columns are unnamed and you know which column you want to check (say the second column, which has index 1)
df=df[df[:,1].between(73,74)].loc[5499:5999] 

print(df.iloc[:,0])
print(df.iloc[:,24])

Редактировать

Учитывая комментарий OP

import glob 
import os 
import numpy as np 
import csv 
import pandas as pd 
import matplotlib.pyplot as plt 
dff = pd.DataFrame()

for filename in glob.iglob("*.txt"): 
    df = pd.read_csv(filename, sep = " ", header=None) 
    df=df[df[25].between(-73,-72)].loc[7999:9999]   
    dff=dff.append([df.iloc[:,0],df.iloc[:,4]])
    print(df.iloc[:][0]) 
    print(df.iloc[:][25])

Спасибо, Джио. Это работало для одного файла. Позвольте мне сделать это для нескольких файлов. Спасибо еще раз

vika1989 06.04.2019 23:15

Теперь у меня проблемы с несколькими текстовыми файлами. import glob import os import numpy as np import csv import pandas as pd import matplotlib.pyplot as plt dff=[] files = glob.glob("*.txt") для имени файла в файлах: df = pd.read_csv(files, sep = " ", header=None) df=[df[25].between(-73,-72)].loc[7999:9999] dff=dff.append(df.iloc[:][0],df. iloc[:][25]) print(df.iloc[:][0]) print(df.iloc[:][25])

vika1989 06.04.2019 23:32

@ vika1989 см. обновленный ответ. Я думаю, что вы зацикливаете неправильный элемент. Вы должны создать фрейм данных из filename, а не из files

CAPSLOCK 06.04.2019 23:42

Зациклился на файлах. Теперь ошибка: объект «список» не имеет атрибута «loc»

vika1989 06.04.2019 23:55

@vika1989 как выглядит files? какой тип файла и каково содержание?

CAPSLOCK 07.04.2019 00:12

«файлы» для каталога как a250.txt 255.txt. содержание аналогично, как я упоминал ранее.

vika1989 07.04.2019 00:14

@vika1989 проблема в тебе dff. почему вы создаете этот список и добавляете к нему?

CAPSLOCK 07.04.2019 00:22

В общем, я хочу получить значение из всех файлов. Например, из a200:245 a250:249, а затем сохраните его в виде массива или списка.

vika1989 07.04.2019 00:25

@ vika1989 проверьте обновленный ответ. Вы можете перенести свой фрейм данных с помощью df.T. Если вы знаете имя столбца, вы можете создать пустой набор данных с именем столбца и избежать необходимости транспонирования после

CAPSLOCK 07.04.2019 00:41

Все та же ошибка df=[df[25].between(-74,-72)].loc[7999:9999] AttributeError: объект 'list' не имеет атрибута 'loc'

vika1989 07.04.2019 00:48

@vika1989 исправлено

CAPSLOCK 07.04.2019 00:56

Теперь все идеально.. Большое вам спасибо.. Вы сэкономили мне много времени. :)

vika1989 07.04.2019 01:00

Вы можете попробовать создать txt файл и написать в каждой строке текстовый файл, который вы хотите открыть с помощью программы :
например

test.txt
dics.txt
fruit.txt
code.txt
...

Затем вы должны создать цикл for, чтобы выбрать каждое имя файла из созданного вами текстового файла и прочитать его:
например

files = open("filenames.txt","r")
for file in files:
    x = open(file,"r").read()
    print(x)

Хотел бы я, чтобы это могло тебе помочь.

Другие вопросы по теме