函数的作用是:对于值为';无';Python 2.7

函数的作用是:对于值为';无';Python 2.7,python,pandas,numpy,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 函数(对于空值不提供任何值) 不管我怎么做,isin都不给emptyl细胞值。稍后,我应用另一个isin来检查一列是否在另一列中,但是,这也将“No

样本数据1:

Country  Year
   A     2000
   A     2000
  None   2000
样本数据2:

Country  Year
   A     2001
   B     2001
  None   2001
输出:

Country  
  True     
  False   
  True   
函数(对于空值不提供任何值)

不管我怎么做,isin都不给emptyl细胞值。稍后,我应用另一个isin来检查一列是否在另一列中,但是,这也将“None”视为True。非常感谢您的帮助

我使用的第二个函数是(这是一个为null提供True的函数):

我尝试了以下所有方法,但都不起作用

df['name'].isnull()
df.fillna('')
我认为您可以在之前
None
NaN
,然后使用函数和按条件检查:



首先尝试过滤空值
df=df.loc[(df['Country'].notnull())和(df['Country'].isin(list))]
不起作用。我刚刚更新了这个问题,加入了我的第二个函数。第二个值为“无”值@EdChumPlease post原始数据、创建df的代码以及复制这些错误以避免歧义的相关错误尝试,通过使用文本解释症状进行调试错误提示必须更新@EdChumSorry这些字符串是'None',object
None
还是
NaN
?我要求的是原始数据,而不是数据的文本表示,例如,我不知道这里的
None
是什么意思谢谢你的回答!我成功地将None值更改为NaN。然而,
df['2000'].isin(df['2001']]*1仍然适用于NaNsI不理解
df['2000']
-
2000
是样本中没有的列吗?当使用'df['2000']时。isin(df['2001'].notnull())*1'将整个列变为False@耶斯雷尔
df['2000'].isin(df['2001'])* 1
df['name'].isnull()
df.fillna('')
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