我正在处理来自钻孔的地下测量,其中每种测量类型涵盖不同的深度范围。在这种情况下,深度被用作索引。
我需要为每种测量类型找到第一次和/或最后一次出现的数据(非 NaN 值)的深度(索引)。
获取数据帧第一行或最后一行的深度(索引)很容易:df.index[0]
或 df.index[-1]
。诀窍在于找到任何给定列的第一个或最后一个非 NaN 出现的索引。
df = pd.DataFrame([[500, np.NaN, np.NaN, 25],
[501, np.NaN, np.NaN, 27],
[502, np.NaN, 33, 24],
[503, 4, 32, 18],
[504, 12, 45, 5],
[505, 8, 38, np.NaN]])
df.columns = ['Depth','x1','x2','x3']
df.set_index('Depth')
理想的解决方案是为第一次出现的 x1 生成 503 的索引(深度),为第一次出现的 x2 生成 502,为最后一次出现的 x3 生成 504。
最佳答案
first_valid_index () 和 last_valid_index() 可以使用。
>>> df
x1 x2 x3
Depth
500 NaN NaN 25.0
501 NaN NaN 27.0
502 NaN 33.0 24.0
503 4.0 32.0 18.0
504 12.0 45.0 5.0
505 8.0 38.0 NaN
>>> df["x1"].first_valid_index()
503
>>> df["x2"].first_valid_index()
502
>>> df["x3"].first_valid_index()
500
>>> df["x3"].last_valid_index()
504
关于python - 在非 NaN 的列中查找第一个和/或最后一个值的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57293506/