Извлеките столбец из текстового файла и сохраните его во фрейме данных в Python - PullRequest
0 голосов
/ 10 июля 2020

У меня есть несколько файлов (тысячи файлов) в папке, я читаю эти файлы с помощью какой-то функции glob. Что я хочу сделать, так это распечатать первый столбец (текстовый файл не имеет столбца заголовка) и сохранить его в каком-то фрейме данных, поскольку мне нужно создавать таблицы на основе вычислений в нескольких файлах. Вот мои данные (образцы данных двух файлов)

File1:

O.U20,99.73000,75538,99.73500,51794,57821,99.73167,1062,4,,,,99.73173
O.Z20,99.70000,58974,99.70500,6748,35815,99.70250,468,3,99.70500,1132,2,99.70048
O.H21,99.79500,4274,99.80000,47043,49961,,,,99.79750,3424,3,99.79236
O.M21,99.81000,48584,99.81500,7062,37456,99.81167,243,3,99.81500,234,2,99.80975
S3.U20,3.000,1132,3.500,69740,3831,,,,3.250,1380,2,3.125
S3.Z20,-9.500,58855,-9.000,27304,3295,-9.250,468,2,-9.000,3730,2,-9.188

File 2:

O.U20,99.73000,75711,99.73500,51794,57821,99.73167,1062,4,,,,99.73173
O.Z20,99.70000,59142,99.70500,6748,35815,99.70250,468,3,99.70500,1132,2,99.70048
O.H21,99.79500,4447,99.80000,47043,49961,,,,99.79750,3424,3,99.79236
O.M21,99.81000,48765,99.81500,7062,37456,99.81167,243,3,99.81500,234,2,99.80975
S3.U20,3.000,1132,3.500,69740,3831,,,,3.250,1380,2,3.125
S3.Z20,-9.500,58855,-9.000,27477,3295,-9.250,468,2,-9.000,3730,2,-9.188

Это мой код, над которым я работаю

import glob
for file in glob.glob("C:/Users/Data/*"):
    print(file)
    myfile = open(file,"r")
    lines = myfile.readlines()
    for line in lines:
         print(line.strip()[0])

Это, однако, вывод на печать (2 раза, что является другой проблемой, поскольку я хочу, чтобы он печатал вывод только один раз)

    O
    O
    O
    O
    S
    S

Я хочу, чтобы вывод был

O.U20
O.Z20
O.H21
O.M21
S3.U20
S3.Z20

во фрейме данных, чтобы я мог создавать дополнительные таблицы. Я думал об использовании нескольких столбцов, однако символ O имеет 4 символа, а символ S - 5 символов.

1 Ответ

1 голос
/ 10 июля 2020

прежде всего вам нужно преобразовать txt в csv, после этого вы можете прочитать его с помощью pandas и превратить их в фрейм данных:

import glob
import pandas as pd

for each in glob.glob('*.txt'):
    with open(each , 'r') as file:
        content = file.readlines()
        with open('{}.csv'.format(each[0:-4]) , 'w') as file:
            file.writelines(content)

for each in glob.glob('*.csv'):
    dataframe = pd.read_csv(each , skiprows=0 , header=None , index_col= 0)

затем:

dataframe.reset_index(inplace=True)

вывод:

>>>print(dataframe[0])
0     O.U20
1     O.Z20
2     O.H21
3     O.M21
4    S3.U20
5    S3.Z20
Name: 0, dtype: object
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...