如果我有一个这样的数组,其中每一行的列索引都是这样的:
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
标记的单元格显示为刻度线。
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
答案 0 :(得分:0)
我看到我的
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