问题描述
我有一个看起来像这样的 pandas DataFrame:
I've got a pandas DataFrame that looks like this:
sum 1948 NaN 1949 NaN 1950 5 1951 3 1952 NaN 1953 4 1954 8 1955 NaN
我想只在开头和结尾截断 NaN(即只保留从 1950 到 1954 的值,包括 NaN).我已经尝试过 .isnull() 和 dropna(),但不知何故我找不到合适的解决方案.有人可以帮忙吗?
and I would like to cut off the NaNs at the beginning and at the end ONLY (i.e. only the values incl. NaN from 1950 to 1954 should remain). I already tried .isnull() and dropna(), but somehow I couldn't find a proper solution. Can anyone help?
推荐答案
使用内置的first_valid_index 和 last_valid_index 它们是专门为此设计的,并对你的 df 进行切片:
Use the built in first_valid_index and last_valid_index they are designed specifically for this and slice your df:
In [5]: first_idx = df.first_valid_index() last_idx = df.last_valid_index() print(first_idx, last_idx) df.loc[first_idx:last_idx] 1950 1954 Out[5]: sum 1950 5 1951 3 1952 NaN 1953 4 1954 8