我有与此类似的简单 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
