函数的作用是:对于值为';无';Python 2.7
样本数据1:函数的作用是:对于值为';无';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
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',objectNone
还是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