我需要创建一个包含 10 列( float )的数据框,并且我需要确保每一行都有 5 个 Nan 值。
Data Frame Which I want to create
A B C D E F G H I J
1.0 Nan 2.0 Nan Nan Nan Nan 5.0 6.0 7.0
Nan Nan Nan 3.0 5.0 Nan Nan 5.0 6.0 7.0
1.0 2.0 3.0 5.0 8.0 Nan Nan Nan Nan Nan
1.0 Nan 3.0 Nan 8.0 10.0 Nan 12.0 Nan Nan
我想创建这种类型的数据集,其中每行有 5 个 NAN 值和 5 个有效值。我想为系列中的每一行返回第 3 次出现 Nan 值的列值。
Expected Output
E (it has 3rd occurrence of Nan value in 1st row)
C (it has 3rd occurrence of Nan value in 2nd row)
H (it has 3rd occurrence of Nan value in 3rd row)
G (it has 3rd occurrence of Nan value in 4th row)
最佳答案
使用 cumsum
和 argmax
df.columns[np.argmax(df.isnull().cumsum(1).eq(3).values,1)]
Out[788]: Index(['E', 'C', 'H', 'G'], dtype='object')
用于创建数据框
df=pd.DataFrame(np.random.randn(4, 10),columns=list('ABCDEFGHIJ'))
for x in range(len(df)):
df.iloc[x,np.random.choice(10, 5, replace=False)]=np.nan
df
Out[783]:
A B C D E F G H \
0 1.263644 NaN -0.427018 NaN NaN 0.160732 0.033323 -1.285068
1 NaN 2.713568 -0.964603 1.456543 NaN NaN 0.201837 1.034501
2 NaN NaN NaN -0.262311 NaN 0.361472 -0.089562 0.478207
3 NaN 1.497916 -0.324090 NaN NaN NaN 0.711363 -0.094587
I J
0 NaN NaN
1 NaN NaN
2 NaN 0.944062
3 NaN -0.298129
关于python - 如何根据给定行中第 3 次出现的值获取列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51255869/