изменить нан значения в пандах - PullRequest
0 голосов
/ 23 ноября 2018

В моем коде метод df.fillna () не работает, когда метод df.dropna () работает.Я не хочу бросать колонку, хотя.Что я могу сделать, чтобы метод fillna () работал?

def preprocess_df(df):
    for col in df.columns:  # go through all of the columns
        if col != "target":  # normalize all ... except for the target itself!
            df[col] = df[col].pct_change()  # pct change "normalizes" the different currencies (each crypto coin has vastly diff values, we're really more interested in the other coin's movements)
            # df.dropna(inplace=True)  # remove the nas created by pct_change
            df.fillna(method="ffill", inplace=True)
            print(df)
            break
            df[col] = preprocessing.scale(df[col].values)  # scale between 0 and 1.

Ответы [ 2 ]

0 голосов
/ 23 ноября 2018

первое значение было NaN, поэтому мне пришлось использовать метод bfill .Спасибо всем

0 голосов
/ 23 ноября 2018

он должен работать, если только он не находится внутри цикла, как упомянуто ..

Вы должны рассмотреть вопрос о его заполнении перед построением цикла или во время построения DataFrame:

Пример Ниже показано, как это работает:

>>> df
  col1
0  one
1  NaN
2  two
3  NaN

Работает как ожидалось:

>>> df['col1'].fillna( method ='ffill')  # This is showing column specific to `col1`

0    one
1    one
2    two
3    two
Name: col1, dtype: object

Во-вторых, если вы хотите изменить несколько выборочных столбцов, используйте метод ниже:

Предположим, у вас есть 3 столбцаи хотите fillna с ffill только для 2 столбцов.

>>> df
  col1  col2 col3
0  one  test  new
1  NaN   NaN  NaN
2  two  rest  NaN
3  NaN   NaN  NaN

Определите столбцы, которые нужно изменить ..

cols = ['col1', 'col2']

>>> df[cols] = df[cols].fillna(method ='ffill')
>>> df
  col1  col2 col3
0  one  test  new
1  one  test  NaN
2  two  rest  NaN
3  two  rest  NaN

Если вы считаете, что это может произойти черезВесь DataFrame, используйте его во время как следует:

>>> df
  col1  col2
0  one  test
1  NaN   NaN
2  two  rest
3  NaN   NaN

>>> df.fillna(method ='ffill')  # inplace=True if you considering as you wish for permanent change.
  col1  col2
0  one  test
1  one  test
2  two  rest
3  two  rest
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...