示例数据1:
Country Year
A 2000
A 2000
None 2000
示例数据2:
Country Year
A 2001
B 2001
None 2001
输出:
Country
True
False
True
函数(对于空值不给出任何值)
df = df.loc[df['Country'].isin(list)]
无论我尝试什么,isin 都会始终为空单元格值提供 None 。后来我应用另一个 isin 来检查一列是否在另一列中,但是,这也将“None”视为 True。非常感谢任何帮助。
我使用的第二个函数是(这是为 Null 提供 True 的函数):
df['2000'].isin(df['2001'])* 1
我尝试了以下所有方法,但都不起作用。
df['name'].isnull()
df.fillna('')
最佳答案
我想你可以 replace
之前将 None
更改为 NaN
,然后按 boolean indexing
检查按条件与函数 notnull
和 isin
:
df2 = pd.DataFrame({'Country': {0: 'A', 1: 'B', 2: None},
'Year': {0: 2001, 1: 2001, 2: 2001}})
print (df2)
Country Year
0 A 2000
1 A 2000
2 None 2000
df2['Country'] = df2['Country'].replace({None: np.nan})
print (df2)
Country Year
0 A 2001
1 B 2001
2 NaN 2001
L = ['A','C']
df = df2[(df2['Country'].notnull()) & (df2['Country'].isin(L))]
print (df)
Country Year
0 A 2001
df1 = pd.DataFrame({'Country': {0: 'A', 1: 'A', 2: None},
'Year': {0: 2000, 1: 2000, 2: 2000}})
print (df1)
Country Year
0 A 2000
1 A 2000
2 None 2000
df2 = pd.DataFrame({'Country': {0: 'A', 1: 'B', 2: None},
'Year': {0: 2001, 1: 2001, 2: 2001}})
print (df2)
Country Year
0 A 2001
1 B 2001
2 None 2001
mask = df2['Country'].isin(df1['Country']) &
(df1['Country'].notnull()) &
(df2['Country'].notnull())
print (mask)
0 True
1 False
2 False
Name: Country, dtype: bool
print (mask.astype(int))
0 1
1 0
2 0
Name: Country, dtype: int32
关于python - pandas.isin() 函数对于值为 'None' Python 2.7 的单元格返回 True,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40489235/