在使用iloc时,我注意到下面这行笨拙的隐式转换:
import numpy as np
import pandas as pd
df = pd.DataFrame({"x":[3,2,1]},dtype=np.int_) # x has dtype int
df.iloc[0,0] = np.nan # now x gets dtype float
df.iloc[1,0] = None # I would have expected dtype object - but no, the None is converted to a Nan and the dtype stays the same
那么,有人能解释一下内部使用的确切规则吗?我认为最广泛的dtype被搜索,可以科普所有给定的值。但显然这不是真的。
或者换个说法:什么时候转换dtype以科普给定的值,什么时候将值转换为给定的dtype?
1条答案
按热度按时间ldxq2e6h1#
Pandas首先被设计为处理数字值(整数,浮点数,日期......),所以我相信None被视为NaN是有意义的。
即使你强制一个对象dtype,pandas也会使用None作为NaN:
请注意,例外情况是使用列表来切片行: