从具有特定dtypes的字典创建数据框,尤其是Nullable IntegerArray

时间:2019-04-05 14:50:45

标签: python pandas dataframe

我有以下示例代码:

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值愉快地共存。

我想将我的值保留为整数,并且避免一开始就浪费时间,因为我通常会有数百万行。

我在熊猫0.24中碰到了Nullable Integer Data Type

所以我有两个问题:

  1. 是否可以将age列的dtype强制设置为“ Int64”?什么 是推荐的方法吗?

  2. 我应该将响应中的每一列创建为带有 相同的索引和显式dtype并将它们添加到数据框 个别吗?我是否应该期望会有明显的性能差异 与DataFrame.from_dict()和df.join()相比?

0 个答案:

没有答案