Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.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 如何在数据框中仅保留线/列交点周围的数据?_Python_Pandas - Fatal编程技术网

Python 如何在数据框中仅保留线/列交点周围的数据?

Python 如何在数据框中仅保留线/列交点周围的数据?,python,pandas,Python,Pandas,如果我有一个数组,每行都有列索引,如下所示: array = [NaN, 3, 4, 3, NaN] 1 2 3 4 5 6 1 1 NaN NaN NaN NaN 1 2 1 1 1 NaN NaN 1 3 NaN 1 1 1 1 1 4 NaN 1 1 1 NaN 1 5 1 NaN 1 NaN NaN 1 1 2 3 4 5 6 1

如果我有一个数组,每行都有列索引,如下所示:

 array = [NaN, 3, 4, 3, NaN]
     1   2   3   4   5   6
 1   1  NaN NaN NaN NaN  1
 2   1   1   1  NaN NaN  1
 3  NaN  1   1   1   1   1 
 4  NaN  1   1   1  NaN  1
 5   1  NaN  1  NaN NaN  1
      1   2   3   4   5   6
 1   NaN NaN NaN NaN NaN NaN
 2    1   1   1  NaN NaN NaN
 3   NaN  1   1   1   1   1 
 4   NaN  1   1   1  NaN NaN
 5   NaN NaN NaN NaN NaN NaN
熊猫数据框如下:

 array = [NaN, 3, 4, 3, NaN]
     1   2   3   4   5   6
 1   1  NaN NaN NaN NaN  1
 2   1   1   1  NaN NaN  1
 3  NaN  1   1   1   1   1 
 4  NaN  1   1   1  NaN  1
 5   1  NaN  1  NaN NaN  1
      1   2   3   4   5   6
 1   NaN NaN NaN NaN NaN NaN
 2    1   1   1  NaN NaN NaN
 3   NaN  1   1   1   1   1 
 4   NaN  1   1   1  NaN NaN
 5   NaN NaN NaN NaN NaN NaN
基本上,我只想保留与列索引相交并被列索引包围的数据。

如何为每行保留与列索引重叠的值,以便获得如下数据帧:

 array = [NaN, 3, 4, 3, NaN]
     1   2   3   4   5   6
 1   1  NaN NaN NaN NaN  1
 2   1   1   1  NaN NaN  1
 3  NaN  1   1   1   1   1 
 4  NaN  1   1   1  NaN  1
 5   1  NaN  1  NaN NaN  1
      1   2   3   4   5   6
 1   NaN NaN NaN NaN NaN NaN
 2    1   1   1  NaN NaN NaN
 3   NaN  1   1   1   1   1 
 4   NaN  1   1   1  NaN NaN
 5   NaN NaN NaN NaN NaN NaN
与“我的行”列索引关联的数据保留在何处


比较输入和输出,您可以看到由
数组标记的单元格显示为勾号

      1   2   3   4   5   6
 1   NaN NaN NaN NaN NaN  1
 2    1   1   ✓  NaN NaN  1
 3   NaN  1   1   ✓   1   1 
 4   NaN  1   ✓   1  NaN  1
 5    1 NaN   1 NaN  NaN  1
从这里开始,还必须保留所有周围的非空单元格(在同一行中):

      1   2   3   4   5   6
 1   NaN NaN NaN NaN NaN  1
 2    ✓   ✓   ✓  NaN NaN  1
 3   NaN  ✓   ✓   ✓   ✓   ✓ 
 4   NaN  ✓   ✓   ✓  NaN  1
 5    1 NaN   1 NaN  NaN  1
产生结果:

      1   2   3   4   5   6
 1   NaN NaN NaN NaN NaN NaN
 2    1   1   1  NaN NaN NaN
 3   NaN  1   1   1   1   1 
 4   NaN  1   1   1  NaN NaN
 5   NaN NaN NaN NaN NaN NaN
我看到我的
6
列与您在测试用例中提供的列不同,但由于它在测试用例中的屏蔽没有遵循其他列的模式,我认为这就是您的意思

希望这有助于:

index = [np.nan, 3, 4, 3, np.nan]
to_nan_mask = [x is np.nan for x in index]
df.loc[to_nan_mask, df.columns] = np.nan
输出:

    1   2   3   4   5   6
0   NaN NaN NaN NaN NaN NaN
1   1.0 1.0 1.0 NaN NaN 1.0
2   NaN 1.0 1.0 1.0 1.0 1.0
3   NaN 1.0 1.0 1.0 NaN 1.0
4   NaN NaN NaN NaN NaN NaN

为什么列
6
在第二行和第四行被遮住了?请把你的问题说得更清楚。@Martijn为了清楚起见,我编辑了这个问题。@coldspeed:这是一个相当大的推断飞跃。它恰好符合给定的预期输出,希望它是OP的实际含义。我不理解的是索引中实际列数
3,4,3
的滚动。我也不理解它的含义,我认为它是一个布尔列,并以这种方式构建它。