Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何筛选包含'';孤立的'';python中列中的nan值_Python_Pandas_Filter_Nan - Fatal编程技术网

如何筛选包含'';孤立的'';python中列中的nan值

如何筛选包含'';孤立的'';python中列中的nan值,python,pandas,filter,nan,Python,Pandas,Filter,Nan,我在pandas数据框中有一列,其中一些行具有NaN值 我想选择满足这些条件的行: -它们是价值观 -它们直接跟在非空值后面或前面 例如,我想选择具有此nan值的行: 输入: 索引| Col … 1| 1344 2|NaN 3| 532 … 所需输出: 2|NaN 但我不想选择这些nan值(因为它们后面跟一个nan值,或者紧跟在另一个nan值之后): 索引| Col … 1| 1344 2|NaN 3|NaN 4| 532 … 任何帮助都将不胜感激 谢谢大家! 下面我用一个例子向您展示了如何实现

我在pandas数据框中有一列,其中一些行具有NaN值

我想选择满足这些条件的行:
-它们是价值观
-它们直接跟在非空值后面或前面

例如,我想选择具有此nan值的行:
输入:

索引| Col


1| 1344
2|NaN
3| 532

所需输出:
2|NaN

但我不想选择这些nan值(因为它们后面跟一个nan值,或者紧跟在另一个nan值之后):

索引| Col


1| 1344
2|NaN
3|NaN
4| 532


任何帮助都将不胜感激


谢谢大家!

下面我用一个例子向您展示了如何实现这一点。一方面,++用于对连续的
NaN
值进行分组​​通过使用
transform
可以在具有多个
NaN
的组中得到一个布尔序列,其中
False
。此布尔级数的
运算,其结果为
df2['col2']。isna()
是我们正在寻找的系列,用于执行和选择存在NaN但不连续的行

df=pd.DataFrame({'col1':[1,2,3,4,5,6,7,8,9,10],'col2':[np.nan,2,3,np.nan,np.nan,6,np.nan,8,9,np.nan]})
print(df)
   col1  col2
0     1   NaN
1     2   2.0
2     3   3.0
3     4   NaN
4     5   NaN
5     6   6.0
6     7   NaN
7     8   8.0
8     9   9.0
9    10   NaN


在您显示的数据框中,没有连续的NAN,您能否创建一个数据框,我们可以使用它了解您想要什么,并说明此数据框的预期输出是什么?我刚刚编辑了它!请检查我的解决方案,并考虑接受我的解决方案的工作:)非常感谢!
mask_repeat_NaN=df.groupby(df['col2'].notna().cumsum())['col2'].transform('size').le(2)
mask=mask_repeat_NaN&df['col2'].isna()
df_filtered=df[mask]
print(df_filtered)

   col1  col2
0     1   NaN
6     7   NaN
9    10   NaN