【发布时间】:2019-12-09 03:14:48
【问题描述】:
我正在处理来自钻孔的地下测量,其中每种测量类型涵盖不同的深度范围。在这种情况下,深度被用作索引。
我需要为每种测量类型找到第一次和/或最后一次出现的数据(非 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。
【问题讨论】:
-
但是您如何确定
'x3'必须是last valid index 而不是first? -
需要知道每个变量的第一个或最后一个有效索引。诀窍是当列具有
NaN值时,调用df的第一行或最后一行索引不能用作解决方法。 -
您的预期输出是什么样的?列表?数据框?系列?
-
预期的输出最容易被可视化为列出每个变量及其最大和最小深度的数据框。能够以
depth_df['x1']['min']或depth_df['x3']['max']格式调用值也很方便。谢谢。 -
向 anky_91 道歉,因为没有指定额外的任务。我面临的主要挑战是获取索引。将输出作为数据框是一个方便的奖励。我很高兴看到您和其他人完成任务的方法。
标签: python pandas numpy dataframe