Python Pandas заменяет ячейку, содержащую строку, на вышеуказанную ячейку

Потому что это локальная переменная. Вот почему ему ничего не назначено:

Локальные переменные несколько отличаются; компилятор никогда не присваивает значение по умолчанию неинициализированной локальной переменной. Если вы не можете инициализировать свою локальную переменную там, где она объявлена, не забудьте присвоить ей значение, прежде чем пытаться его использовать. Доступ к неинициализированной локальной переменной приведет к ошибке времени компиляции.

blockquote>

Изменить: почему Java вызывает эту ошибку компиляции? Если мы посмотрим на файл класса IdentifierExpression.java , мы найдем этот блок:

...
if (field.isLocal()) {
            LocalMember local = (LocalMember)field;
            if (local.scopeNumber < ctx.frameNumber && !local.isFinal()) {
                env.error(where, "invalid.uplevel", id);
            }
            if (!vset.testVar(local.number)) {
                env.error(where, "var.not.initialized", id);
                vset.addVar(local.number);
            }
            local.readcount++;
        }
...

Как указано (if (!vset.testVar(local.number)) {), JDK проверяет (с testVar ), если переменная назначена (исходный код Vset , где мы можем найти код testVar). Если нет, он вызывает ошибку var.not.initialized из файла свойств :

...
javac.err.var.not.initialized=\
    Variable {0} may not have been initialized.
...

Источник

1
задан Zeshen Zhang 27 February 2019 в 04:01
поделиться

1 ответ

Общая структура таких задач: df.loc [cond, col] = ...

Использование настройки @ meW,

df = pd.DataFrame({'col': ['Elephant', 'Grass', 'Parameter', 'Root']})
df.loc[df.col.eq('Parameter'), 'col'] = df.col.shift(1)

    col
0   Elephant
1   Grass
2   Grass
3   Root
0
ответ дан Vaishali 27 February 2019 в 04:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: