我有以下Pandas 数据帧.有很多NaN,但有很多NaN值(我跳过了NaN值,使它看起来更短).

0        NaN
...        
26       NaN
27     357.0
28     357.0
29     357.0
30       NaN
...
246      NaN
247    357.0
248    357.0
249    357.0
250      NaN
...
303      NaN
304     58.0
305     58.0
306     58.0
307     58.0
308     58.0
309     58.0
310     58.0
311     58.0
312     58.0
313     58.0
314     58.0
315     58.0
316      NaN
...
333      NaN
334    237.0

我想过滤所有NaN个值,并且只保留NaN个值中的第一个值(例如,从索引27-29有三个值,我想保留索引27的值,跳过28和29的值).目标数组应如下所示:

27     357.0
247    357.0
304     58.0
334    237.0

我不知道我怎么能只保留第一个值.提前谢谢.

推荐答案

仅取非nan的值,但其前面的值为nan:

df = df[df.col1.notna() & df.col1.shift().isna()]

输出:

      col1
27   357.0
247  357.0
304   58.0
334  237.0

假设所有值都大于0,我们还可以执行以下操作:

df = df.fillna(0).diff()
df = df[df.col1.gt(0)]

Python相关问答推荐

对整个 pyramid 进行分组与对 pyramid 列子集进行分组

通过Selenium从页面获取所有H2元素

图像 pyramid .难以创建所需的合成图像

用Python解密Java加密文件

对象的`__call__`方法的setattr在Python中不起作用'

提取相关行的最快方法—pandas

如何从需要点击/切换的网页中提取表格?

在单次扫描中创建列表

幂集,其中每个元素可以是正或负""""

python sklearn ValueError:使用序列设置数组元素

并行编程:同步进程

如何过滤组s最大和最小行使用`transform`'

什么是一种快速而优雅的方式来转换一个包含一串重复的列,而不对同一个值多次运行转换,

删除Dataframe中的第一个空白行并重新索引列

#将多条一维曲线计算成其二维数组(图像)表示

as_index=False groupBy不支持count

3.我无法找到制作这种三角形图案的方法

如何让doctest在mkdocs的标记代码块中运行示例?

使用Mysql Connector通过Python创建Mysql Storec过程

有条件的滚动平均数(面试问题)