我需要从第一个非空白单元格之前的单元格开始获取 pandas 系列的子集。
例如:对于系列:
>>> s = pd.Series([np.NaN, np.NaN, 1], index=['a', 'b', 'c'])
>>> s
a NaN
b NaN
c 1.0
dtype: float64
我需要获取包含行“b”和“c”的子集。像这样:
b NaN
c 1.0
dtype: float64
我有以下代码:
import pandas as pd
import numpy as np
s = pd.Series([np.NaN, np.NaN, 1], index=['a', 'b', 'c'])
lst = s.index.to_list()
s[lst[lst.index(s.first_valid_index())-1:]]
有没有更简单和/或更快的方法来做到这一点? 请注意,数据可能包含空白来代替 NA。
请您参考如下方法:
使用 get_loc(您也不必再依赖 let)和 first_valid_index,这样可读性稍强:
s[s.index.get_loc(s.first_valid_index())-1:]
b NaN
c 1.0
dtype: float64
假设您的索引值是唯一的,这将起作用。
要处理空白,使用replace,
s2 = pd.Series(['', np.NaN, 1], index=['a', 'b', 'c'])
s2[s2.index.get_loc(s2.replace('', np.nan).first_valid_index())-1:]
b NaN
c 1
dtype: object
