Python 如何继续使用fillna中的'None'值
我有以下字典:Python 如何继续使用fillna中的'None'值,python,pandas,Python,Pandas,我有以下字典: fillna(值={'first_name':'Andrii','last_name':'Furmanets','created_at':None}) 当我把字典传给fillna时,我看到: raise VALUERROR('必须指定填充方法或值')\n VALUERROR:必须指定填充方法或值\n 在我看来,它在None值上失败 我使用的是pandas版本0.20.3。您使用的是什么类型的数据结构?这适用于pandas系列: import pandas as pd d = p
fillna(值={'first_name':'Andrii','last_name':'Furmanets','created_at':None})
当我把字典传给fillna时,我看到:
raise VALUERROR('必须指定填充方法或值')\n VALUERROR:必须指定填充方法或值\n
在我看来,它在None
值上失败
我使用的是pandas版本0.20.3。您使用的是什么类型的数据结构?这适用于pandas系列:
import pandas as pd
d = pd.Series({'first_name': 'Andrii', 'last_name':'Furmanets', 'created_at':None})
d = d.fillna('DATE')
设置考虑样例数据文件<代码> DF
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
我可以确认错误
df.fillna(dict(A=1, B=None, C=4))
之所以会发生这种情况,是因为pandas在字典中的键之间循环,并对每个相关列执行fillna
您将看到默认值为None
。因此,我们可以使用
df.A.fillna(None)
或同等地
df.A.fillna()
我要补充的是,考虑到您试图用空值填充空值,我并不感到非常惊讶
你需要的是一个变通的方法 解决方案
在要用非空值填充的列上使用。然后在要用一个空值替换另一个空值的特定列上使用
df.fillna(dict(A=1, C=2)).replace(dict(B={np.nan: None}))
A B C
0 1.0 None 2
1 1.0 2 D
使用
None
填充NA的另一种方法。我使用的是pandas0.24.0
,我这样做是为了向POSTGRES数据库插入空值
# 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
尝试用
None
填充datetime是个坏主意,这正是(NotATime)的目的:用于缺少的datetime。如果您想用python的None规范化所有空值
df.fillna(np.nan).replace([np.nan], [None])
第一个
fillna
将用Numpy的nan替换所有(None、NAT、np.nan等),然后用python的None替换Numpy的nan。我使用字典而不是字符串。你打算用什么替换None
呢?甚至可能是“None”“
。在放入fillna
之前,我将dict标准化。正如你提到的。谢谢。在float列中,没有一个事实上由np.nan表示(在大多数类型中)。所以这没有任何意义。从d={'first_name':'Andrii','last_name':'Furmanets'}
这本词典来自外部,必须经过pandas,在字段中有created_,在我看来它与pandas 0.18.0一起工作。尝试用None
填充日期时间是个坏主意,这就是(NotATime),用于:缺少日期时间。Ivalue
作为fillna
中的参数,如下所示:df.fillna(value=dict(A=1,B=None,C=4))
是否相同?是。这是一样的。索引器:只有整数、片(
:)、省略号(
…)、numpy.newaxis(
None)和整数或布尔数组是有效的索引。
不幸的是,我不能给出示例,因为它们是包含敏感数据的非常大的数据帧。知道会发生什么吗?对我来说,这是对整个数据帧应用None最简单的方法。这不是答案吗?
df.fillna(np.nan).replace([np.nan], [None])
df.fillna(np.nan).replace([np.nan], [None])