Панды игнорирует форматеры

Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.

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

public class Student {

    private int id;

    public int getId() {
        return this.id;
    }

    public setId(int newId) {
        this.id = newId;
    }
}

Приведенный ниже код дает вам исключение с нулевым указателем.

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}

Поскольку вы используете Obj_Student, но вы забыли инициализировать его, как в правильном коде, показанном ниже:

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student = new Student();
            obj_Student.setId(12);
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}
0
задан FooBar 14 April 2019 в 12:28
поделиться

3 ответа

Похоже, что когда тип данных столбца object, pandas полностью игнорирует форматирование без выдачи предупреждений.

0
ответ дан FooBar 14 April 2019 в 12:28
поделиться

Используя Pandas 0.23.4, следующий пример работает как ожидалось:

import pandas as pd
# pd.__version__ # '0.23.4'
z = pd.DataFrame([1.69998, 0.98, 0.849991], columns=["value"])
s = z.to_string(formatters=['{:.3f}'.format])
print(s)

Возвращает:

  value
0 1.700
1 0.980
2 0.850

Как вы заметили, если dtypes равно object, Метод to_string игнорирует форматеры:

z.astype(object).to_string(formatters=['{:.2f}'.format])
# '      value\n0   1.69998\n1      0.98\n2  0.849991'
0
ответ дан jlandercy 14 April 2019 в 12:28
поделиться

При попытке применить форматирование для получения плаваний с 3 числами перед десятичным числом и 2 после, Вы форматируете, является неправильным. Первое число в {3.2f} представляет длина из числа включая десятичное число. Таким образом, Вам было бы нужно следующее:

print(z.to_string(formatters=['{:06.2f}'.format]))

   Value
0 001.70
1 000.98
2 000.85
0
ответ дан Erfan 15 April 2019 в 00:19
поделиться
  • 1
    ах я вижу все еще v2.. поэтому, возможно, попробуйте зернышко - установка - обновляет flake8 – RichieK 22 January 2019 в 02:32
  • 2
    ах я вижу все еще v2.. поэтому, возможно, попробуйте зернышко - установка - обновляет flake8 – RichieK 22 January 2019 в 02:32
Другие вопросы по тегам:

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