python - pandas.isin() 函数对于值为 'None' Python 2.7 的单元格返回 True

标签 python pandas numpy

示例数据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 检查按条件与函数 notnullisin :

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/

相关文章:

python - tkinter-调整彩色图像大小时,仅以红色显示

python - 如何匹配一列中的唯一元素并列出第二列中的相应值

python - 如何使用 pandas/matplotlib 绘制/管理 2 列分类数据?

python - 如何追加屏蔽数组

python - 如何在关注更好的准确性的同时做出更好的曲线拟合

python - 转换为以行作为列表的普通数据框。将行拆分为列

python - 如何在 Numpy Array 和 Pandas Dataframe 之间进行映射?

python - 使用 pandas 和 numpy 平均表索引

python - 如何获取具有最大数字([a,3])的列表([a,2],[a,1],[a,3])

python - 子选择多索引 pandas 数据框以创建多个子集(使用字典)