У меня есть следующий пример кода:
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.
Итак, у меня два вопроса:
Есть ли способ принудительно установить dtype столбца age в Int64? Какие
будет рекомендуемый метод?
Должен ли я создавать каждый столбец в ответе как серию с
тот же индекс и явный тип d и добавить их в фрейм данных
в индивидуальном порядке? Должен ли я ожидать значительную разницу в производительности
по сравнению с DataFrame.from_dict () и df.join ()?