gpt4 book ai didi

python - 查找行中第一个 NaN 值的索引

转载 作者:太空宇宙 更新时间:2023-11-03 13:08:21 27 4
gpt4 key购买 nike

我有一个看起来像这样的数据框:

table = pd.DataFrame({'a':[0,0,0,0],
'b':[1,1,1,3,],
'c':[2,2,5,4],
'd':[3,np.NaN,6,6],
'e':[4,np.NaN, 7,8],
'f':[np.NaN,np.NaN,np.NaN,10,]}, dtype='float64')


a b c d e f
0 0.0 1.0 2.0 3.0 4.0 NaN
1 0.0 1.0 2.0 NaN NaN NaN
2 0.0 1.0 5.0 6.0 7.0 NaN
3 0.0 3.0 4.0 6.0 8.0 10.0

对于每一行,我试图找到第一个 NaN 值的列索引。这样我就可以将该值存储在一个变量中以供以后使用。

到目前为止,我尝试了这段代码,但它并没有给我我想要的东西。我不想要一个数组,只想要一个值。

for i in table.itertuples():
x = np.where(np.isnan(i))
print(x)

(array([6]),)
(array([4, 5, 6]),)
(array([6]),)
(array([], dtype=int64),)

提前感谢您的任何评论/建议!

最佳答案

检查na,逐行获取最大值索引,筛选掉完全没有na的行。

table.isna().idxmax(1).where(table.isna().any(1))

#0 f
#1 d
#2 f
#3 NaN
#dtype: object

或者如果您需要列索引,正如@hpaulj 所评论的,您可以使用argmax:

import numpy as np
is_missing = table.isna().values
np.where(is_missing.any(1), is_missing.argmax(1), np.nan)

# array([ 5., 3., 5., nan])

关于python - 查找行中第一个 NaN 值的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50775923/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com