Создать фрейм данных из dict с определенными dtypes, в частности Nullable IntegerArray - PullRequest
0 голосов
/ 05 апреля 2019

У меня есть следующий пример кода:

import pandas as pd

def create_response_dataframe(response):

    d = { }

    for index, item in response.items() :

        d[int(index)] = \
            {
                "name"      : item.get("name", None),  #str or None
                "surname"   : item.get("surname", None), #str or None
                "age"       : item.get("age", None) # int or None
            }

    return pd.DataFrame.from_dict(d, orient="index")


def join_response_to_dataframe(df, response):

    response_df = create_response_dataframe(response)
    df = df.join(response_df, how="left", sort=False)

    return df

После некоторых вычислений я получаю словарь результатов, которые я хочу присоединить к существующему фрейму данных. Однако, поскольку некоторые из целочисленных значений отсутствуют в словаре (значение == Нет), pandas сохраняет их как NaN, изменяет dtype на float и преобразует мои целочисленные значения возраста в float.

Столбцы, содержащие строки, успешно сосуществуют со значениями NaN.

Я хочу, чтобы мои значения были целыми числами, и во-первых, чтобы не тратить время на преобразование, поскольку у меня, как правило, миллионы строк.

Я наткнулся на Nullable Integer Data Type в пандах 0.24.

Итак, у меня два вопроса:

  1. Есть ли способ принудительно установить dtype столбца age в Int64? Какие будет рекомендуемый метод?

  2. Должен ли я создавать каждый столбец в ответе как серию с тот же индекс и явный тип d и добавить их в фрейм данных в индивидуальном порядке? Должен ли я ожидать значительную разницу в производительности по сравнению с DataFrame.from_dict () и df.join ()?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...