我有以下示例代码:
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。
所以我有两个问题:
是否可以将age列的dtype强制设置为“ Int64”?什么 是推荐的方法吗?
我应该将响应中的每一列创建为带有 相同的索引和显式dtype并将它们添加到数据框 个别吗?我是否应该期望会有明显的性能差异 与DataFrame.from_dict()和df.join()相比?