df = pd.DataFrame({
'caseid': [1, 1, 1, 2, 2, 2, 3, 3, 3],
'timestamp': [10, 20, 30, 10, 20, 30, 10, 20, 30]
'var1': [np.nan, np.nan, np.nan, 10, np.nan, 11, 12, 13, 14],
'var2': [2., 3., 4., np.nan, 5., 6., np.nan, np.nan, np.nan]
})
我需要为每个变量caseid
找到第一个(和最后一个)有效的时间戳。即,对于var1
,caseid
1,它将是None
,对于caseid
2,它将是10
(最后一个30
)。对于每个附加的var列也是如此。
有没有句柄组的id,而不循环caseid
和做一个first_valid_index()
的每一列,因为循环不是最有效的时候使用pandas?
1条答案
按热度按时间3npbholx1#
您可以使用
filter
(或手动)选择所需的列,然后使用时间戳替换非NA值(使用mul
和where
),最后使用groupby.agg
和first
/last
:输出:
中间体: