pandas.dataframe.fillna: NotImplementedError - PullRequest
0 голосов
/ 27 июня 2018

Я хотел вписать фрейм данных, используя команду fillna в пандах. Вот фрагмент моего кода:

import glob
import pandas as pd
files=glob.glob("IN.201*.csv")
i=0
n=1    
#the while loops are for reading and writing different subsets of the table into 
#different .txt files:
while i<15:
   j=0
   while j<7:
    dfs=[]
    m=1
   #for loop over only one file for testing:
       for file in files[:1]:
        z=i+1
        #reading subset of the dataframe:
        k=float(68.109375)+float(1.953125)*i
        k1=float(68.109375)+float(1.953125)*z
        l=float(8.0)+float(4)*j
        l1=float(8.0)+float(4)*(j+1)
        df=pd.read_csv(path+file).query( '@k <= lon < @k1 and @l < lat <= @l1')[['lon','lat','country','avg']]
        #renaming columns in df: 
        df.rename(columns={"avg":"Day"+str(m)}, inplace=True)
        #print(df)
        m=m+1
        dfs.append(df)
  #imputation: 
    df_final=dfs[0].fillna(method='bfill', axis='columns', inplace=True).fillna(method='ffill', axis=1, inplace=True)
  #writing to a txt file:
    with open('Region_'+str(n), 'w+') as f:
        df_final.to_csv(f)

    n=n+1
    j=j+1
   i=i+1

Ошибка:

 Traceback (most recent call last):
 File "imputation_test.py", line 42, in <module>
 df_final=dfs[0].fillna(method='bfill', axis='columns', inplace=True).fillna(
 method='ffill', axis=1, inplace=True)
 File "C:\Users\DELL\AppData\Local\Programs\Python\Python36\lib\site- 
 packages\p
 andas\core\frame.py", line 3787, in fillna
 downcast=downcast, **kwargs)
 File "C:\Users\DELL\AppData\Local\Programs\Python\Python36\lib\site-packages\pandas\core\generic.py", line 5359, in fillna
raise NotImplementedError()
 NotImplementedError

Мотивация для кода:

По сути, я хотел прочитать файл .csv в несколько фреймов данных, состоящих из разных подмножеств этой таблицы (отсюда и все циклы, которые я использовал), чтобы переставить и разбить файл / файлы .csv (на самом деле я хочу сделать это для нескольких файлов .csv) в более подходящий формат. Затем я хотел заполнить недостающие данные с помощью команды fillna вдоль оси столбца.

Код структурирован для чтения в несколько файлов .csv и поэтому содержит ненужные команды, такие как 'df = []' и 'for loop', но для упрощения я сначала пробовал этот код, чтобы убедиться, и я получил эту ошибку. Не стесняйтесь просить больше информации для этой ошибки. Спасибо!

1 Ответ

0 голосов
/ 28 июня 2018

Используйте bfill и ffill с axis=1:

dfs = dfs.bfill(axis=1).ffill(axis=1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...