Как создать список только с именами данных в качестве элементов, которые будут использоваться в качестве входных данных для вызова другой функции - PullRequest
0 голосов
/ 11 декабря 2018

Я пытаюсь объединить несколько CSV-файлов с похожими именами файлов.Я хочу сделать это, написав функцию и запустив ее, используя цикл for.

Функция, которую я написал:

def GetEach(LastBit):
    FilePath = r'file:///Path\FLAG_' + LastBit + '.csv'
    df = pd.read_csv(FilePath)
    df = df[['CRN', 'ALCOHOL_RELATED', 'CELL_PHONE', 'DRINKING_DRIVER', 'DRUG_RELATED',
       'ILLEGAL_DRUG_RELATED', 'DRUGGED_DRIVER',
       'IMPAIRED_DRIVER' ]]
    return df 

И затем цикл for, который я написал, показан ниже.Причина кода заключается в том, что имена файлов CSV-файлов практически идентичны, за исключением разных годов.

for i in range(2, 8):
    MyInput = '201' + str(i) + '_Northampton'
    r.append(GetEach(MyInput)) 

То, что я хочу, наконец, получить, это что-то вроде WhatIWant = [GetEach(2012), GetEach(2013)...], и тогда я могу просто запустить pd.concat(WhatIWant ) чтобы получить то, что я хочу.Но, очевидно, мой код сделает кадр данных полностью распутанным в списке r.

Как мне исправить мой код?Или есть гораздо лучший способ сделать это?

Спасибо.

1 Ответ

0 голосов
/ 11 декабря 2018

Это хороший способ прочитать CSV-файлы, добавить кадры данных в список и затем объединить их в один большой массив данных.

Ваш пример кода не является полным.Ваш код выглядит примерно так?

import pandas as pd

def GetEach(LastBit):
    FilePath = r'file:///Path\FLAG_' + LastBit + '.csv'
    df = pd.read_csv(FilePath)
    df = df[['CRN', 'ALCOHOL_RELATED', 'CELL_PHONE', 'DRINKING_DRIVER', 'DRUG_RELATED', 'ILLEGAL_DRUG_RELATED', 'DRUGGED_DRIVER','IMPAIRED_DRIVER' ]]
    return df 

r = [] # Start with an empty list!

for i in range(2, 8):
    MyInput = '201' + str(i) + '_Northampton'
    r.append(GetEach(MyInput)) 

df_complete = pd.concat(r)

Если так, проверили ли вы, что отдельные df правильные?

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