Возможно сохранить getvalue () с FTP и сохранить в dataframe Python - PullRequest
0 голосов
/ 06 февраля 2019

Я пытаюсь выяснить, могу ли я сохранять файлы .txt непосредственно с FTP-сервера и превращаю их в переменную с одним каскадом , не сохраняя каждый файл на своем локальном диске.

Мой способ сделать это прямо сейчас выглядит так:

#import packages

import pandas as pd
import numpy as np
import csv
import os, io
import re
import ftplib
from ftplib import *
from ftplib import FTP
from io import StringIO, BytesIO

ftp = ftplib.FTP('ftp.cpc.ncep.noaa.gov') # enter the main page

ftp.login() # log in to archive

# directory for monthly data
ftp.cwd('htdocs/products/analysis_monitoring/cdus/degree_days/archives/Heating degree Days/monthly states/2018')

filenames_monthly = ftp.nlst() # get list of filenames in archive

#grab files wanted from a list of files already on local machine
filenames_wanted_monthly = list(set(filenames_monthly).intersection(date_list_monthly)) # get list of unobtained dates

for file_month in filenames_wanted_monthly:
    r = BytesIO()
    ftp.retrbinary('RETR '+ file_month, r.write)
    df_list.append(r.getvalue().decode('utf-8'))
    print(r.getvalue())

Когда я print получаю значения, я получаю искомый текст, но в неагрегированной и грязной форме:

b' \n              HEATING DEGREE DAY DATA MONTHLY SUMMARY\n     POPULATION-WEIGHTED STATE,REGIONAL,AND NATIONAL AVERAGES\n              CLIMATE PREDICTION CENTER-NCEP-NWS-NOAA\n \n                     MONTHLY DATA FOR OCT 2018\n                 ACCUMULATIONS ARE FROM JULY 1, 2018\n         -999 = NORMAL LESS THAN 100 OR RATIO INCALCULABLE\n \n   STATE         MONTH MON  MON     CUM   CUM   CUM   CUM   CUM\n                 TOTAL DEV  DEV     TOTAL DEV   DEV   DEV   DEV\n                       FROM FROM          FROM  FROM  FROM  FROM\n                       NORM L YR          NORM  L YR  NORM  L YR\n                                                      PRCT  PRCT\n  \n ALABAMA            90  -63  -28      90   -78   -48   -46   -35\n ALASKA            685 -314 -149    1436  -629  -251   -30   -15\n ARIZONA            43  -33   42      43   -40    42  -999  -999\n ARKANSAS          197   24   24     215    14    24     7    13\n CALIFORNIA         43  -76   -5      43  -126   -22   -75   -34\n COLORADO          593   20   37     721  -187   -38   -21    -5\n CONNECTICUT       399  -22  179     498   -56   137   -10    38\n DELAWARE          242  -43   94     245   -83    75   -25    44\n DISTRCT COLUMBIA  194  -11  103     195   -36    97   -16    99\n FLORIDA             3   -7  -19       3    -7   -19  -999  -999\n GEORGIA           117  -37  -18     117   -52   -39   -31   -25\n HAWAII              0    0    0       0     0     0  -999  -999\n IDAHO             535    3  -78     732  -112  -104   -13   -12\n ILLINOIS          430   35  135     529     9   107     2    25\n INDIANA           386   10   95     471   -24    45    -5    11\n IOWA             

Добавление к списку дает мне набор str значимых списков size=1.

Можно ли сохранить эти файлы .txt, разделив их с помощью тегов \n в одинчитаемый фрейм данных?

Мой желаемый вывод будет фреймом данных с 2 столбцами с первыми 2 значениями после каждого экземпляра \n:

STATE              TOTAL
ALABAMA            90
ARIZONA            43
CALIFORNIA         43
CONNECTICUT       399
.
.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...