Skip to main content
 首页 » 编程设计

python之将 Pandas 数据框切片到包含值的所有列的第一个实例

2025年05月04日13freeliver54

我有与此类似的简单 pandas 时间序列数据框:

In [69]: df 
Out[69]: 
              A    B 
Date 
2015-01-01  NaN  NaN 
2015-02-01  1.1  NaN 
2015-03-01  NaN  NaN 
2015-04-01  1.2  NaN 
2015-05-01  1.5  1.2 
2015-06-01  1.6  1.9 
2015-07-01  1.3  NaN 
2015-08-01  1.2  3.0 
2015-09-01  1.1  1.1 

从所有列中都有值的第一个点开始获取数据框的最佳方法是什么,即以编程方式获取此输出?

In [71]: df.ix[4:] 
Out[71]: 
              A    B 
Date 
2015-05-01  1.5  1.2 
2015-06-01  1.6  1.9 
2015-07-01  1.3  NaN 
2015-08-01  1.2  3.0 
2015-09-01  1.1  1.1 

请您参考如下方法:

您可以使用 .first_valid_index() 获取列的第一个非 NaN 索引。

# your data 
# ============================ 
df 
 
              A    B 
Date                 
2015-01-01  NaN  NaN 
2015-02-01  1.1  NaN 
2015-03-01  NaN  NaN 
2015-04-01  1.2  NaN 
2015-05-01  1.5  1.2 
2015-06-01  1.6  1.9 
2015-07-01  1.3  NaN 
2015-08-01  1.2  3.0 
2015-09-01  1.1  1.1 
 
# processing 
# ================================ 
# get the first valid index for each column 
# and calculate the max 
first_valid_loc = df.apply(lambda col: col.first_valid_index()).max() 
 
df.loc[first_valid_loc:] 
 
              A    B 
Date                 
2015-05-01  1.5  1.2 
2015-06-01  1.6  1.9 
2015-07-01  1.3  NaN 
2015-08-01  1.2  3.0 
2015-09-01  1.1  1.1