pandas.DataFrame.shift () fill_value не работает - PullRequest
4 голосов
/ 13 апреля 2019

Это может звучать довольно странно, но когда я использую функцию pandas.DataFrame.shift() с аргументом ключевого слова fill_value, я получаю TypeError: shift() got an unexpected keyword argument 'fill_value'.

Даже простой пример документации дает мне эту ошибку:

df = pd.DataFrame({'c1': [1, 2, 3], 
                   'c2': [4, 5, 6],
                   'c3': [7, 8, 9]})

df.shift(periods=1, fill_value=0)

Как правило, ожидается

    c1    c2    c3
0   0     0     0
1   1     4     7
2   2     5     8
3   3     6     9

но выдает ошибку. Кто-нибудь случайно узнает, в чем может быть проблема? Я искал в другом месте, но кажется, что никто другой не испытывает эту проблему ...

1 Ответ

4 голосов
/ 13 апреля 2019

Проблема заключается в использовании панд ниже 0.24+, где не реализован этот параметр в DataFrame.shift.

fill_value : объект, необязательно

Скалярное значение, которое будет использоваться для вновь введенных пропущенных значений.значение по умолчанию зависит от dtype self.Для числовых данных используется np.nan.Для даты, времени, времени или данных периода и т. Д. Используется NaT.Для расширения dtypes используется self.dtype.na_value.

Изменено в версии 0.24.0 .

Затем используйте DataFrame.fillna:

df = df.shift(periods=1).fillna(0)

или DataFrame.fillna с указанием первой строки по позиции на DataFrame.iloc, если возможно, другие пропущенные значения в данных и необходимо заменить только их:

df = df.shift(periods=1)
df.iloc[0] = df.iloc[0].fillna(0)
print (df)
    c1   c2   c3
0  0.0  0.0  0.0
1  1.0  4.0  7.0
2  2.0  5.0  8.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...