Извлечение имени файла и использование его в качестве метки на DataFrame в Pandas - PullRequest
0 голосов
/ 20 октября 2018

У меня есть большая сумма .txt файлов, которые я хочу объединить вместе, но в самих файлах отсутствуют даты.

Однако, дата - это имя файла , которое я хочуизвлечь как-нибудь и использовать в качестве метки на моих Pandas DataFrames - например Apr 2009.txt.Это компенсирует отсутствие фактической даты в самом файле.

Есть ли какой-либо способ ввести все файлы локально, по одному за раз, и выложить имена файлов в виде меток, которые разбивают каждую частьобщая датафрейм по дате?

Мой псевдокод:

file = 'PATH\\FileName.txt'

openfile = open(file,'r')
new_line = []

def separateState(l):
    for line in l:
        if any(x in line for x in ['New York']):     
            new_line.append(line.split())

Тогда

def joinWords(n):
    for listy in n:
        operation on each list (listy)
    df = pd.DataFrame(appended_data)
    df.to_csv('FileName.csv')

Где каждый файл является .txt, когда взяты во вложенных списках (проанализировал эти функции выше по городам).

Ввод выглядит примерно так:

[['CityName1', 'number1'.....'number2'....],.......many other lists of similar types]

Вывод, который я хочу получить:

Date                       |    City    |   UNIT1  |   UNIT2  |.....
FileName (Apr 2009)        |  CityName1 | number01 | number11 |....
<blank til next file name> |  CityName2 | number02 | number12 |....
.
.
.
.

В основном я хочуразделить каждый df по FileName в начале каждого приема.

1 Ответ

0 голосов
/ 20 октября 2018

Я бы, вероятно, использовал стандартный модуль CSV в Python, https://docs.python.org/3/library/csv.html. Но если вы предпочитаете использовать панд, ниже приведен фрагмент кода, который вы можете изменить:

import os
import pandas as pd

#get your working directory and target folder that contains all your files
path = os.path.join(os.getcwd(),'folder')

files = [os.path.join(path,i) for i in os.listdir(path) if os.path.isfile(os.path.join(path,i))]

df = pd.DataFrame()

#for every file in folder, read it and append to a empty dataframe with column filename as 'Date'
for file in files:
    _df = pd.read_csv(file)
    _df['Date'] = os.path.split(file)[-1]
    df = df.append(_df)   

Пример, который я использовалвыше читает каждый файл в папке, проверяет, является ли он допустимым файлом и сохраняет его в списке.Как только у нас есть список файлов, мы просто зацикливаем его и сохраняем в _df, где он добавляется к df с именем файла.Ваш последний файл будет содержать все строки данных и имена файлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...