当使用panda的append函数将字典添加到空DataFrame时,int类型的元素将被转换并存储在DataFrame中。
如下面的代码所示,向任何数据类型的转换似乎都取决于字典中的其他元素。
如果没有这种行为,我们如何将int类型存储为int类型?之后我是否必须转换DataFrame的数据类型?
df = pd.DataFrame(columns=["int","float"])
print(df.append({"int":1, "float":0.5},ignore_index=True).dtypes)
"""
int float64
float float64
dtype: object
"""
df = pd.DataFrame(columns=["str","int","float"])
print(df.append({"str":"test", "int":1, "float":0.5},ignore_index=True).dtypes)
"""
str object
int object
float float64
dtype: object
"""
您可以在将所有内容附加到数据帧的末尾使用infer_objects
来更正数据类型。
此外,您可以使用concat而不是append,后者具有更多的功能
In [47]: df.append({"str":"test", "int":1, "float":0.5},ignore_index=True).infer_objects().dtypes
Out[47]:
str object
int int64
float float64
dtype: object