# Stealing @pIRSquared dataframe
df = pd.DataFrame(dict(A=[1, None], B=[None, 2], C=[None, 'D']))
df
A B C
0 1.0 NaN None
1 NaN 2.0 D
# fill NaN with None. Basically it says, fill with None whenever you see NULL value.
df['A'] = np.where(df['A'].isnull(), None, df['A'])
df['B'] = np.where(df['B'].isnull(), None, df['B'])
# Result
df
A B C
0 1.0 None None
1 None 2.0 D
5条答案
按热度按时间jckbn6z71#
如果你想用Python的None来规范化所有的null。
字符串
第一个
fillna
将用Numpy的NaN替换所有(None,NAT,np.nan等),然后用python的None替换Numpy的NaN。ma8fv8wu2#
设置
考虑示例框架
df
字符串
我可以确认错误
这是因为pandas循环遍历字典中的键,并为每个相关列执行
fillna
。型
您将看到默认值为
None
。型
或等效地
型
我要补充的是,考虑到你试图用空值填充空值,我并不感到非常惊讶。
你需要的是
解决方案
在你想用非空值填充的列上使用
pd.DataFrame.fillna
。然后在你想用一个空值交换另一个空值的特定列上使用pd.DataFrame.replace
。型
vd2z7a6w3#
您使用的是哪种类型的数据结构?这适用于pandas Series:
字符串
g2ieeal74#
用
None
填充的另一种方法。我在pandas0.24.0
上,我这样做是为了将NULL值插入到POSTGRES数据库中。字符串
wd2eg0qa5#
**解决方案:**使用pandas
pd.NA
,而不是基本的PythonNone
字符串
通常情况下,最好保持pandas
NA
不变。不要尝试更改它。NA的存在是一个特性,而不是问题。NA
在其他pandas函数中得到正确处理(但不是numpy)