我有一个像这样的dataframe

pd.DataFrame([list(range(8))+[np.nan]*2, [np.nan]*len(range(10)), range(10), [np.nan]*2+list(range(8)), range(10)])
Out[31]: 
     0    1    2    3    4    5    6    7    8    9
0  0.0  1.0  2.0  3.0  4.0  5.0  6.0  7.0  NaN  NaN
1  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
2  0.0  1.0  2.0  3.0  4.0  5.0  6.0  7.0  8.0  9.0
3  NaN  NaN  0.0  1.0  2.0  3.0  4.0  5.0  6.0  7.0
4  0.0  1.0  2.0  3.0  4.0  5.0  6.0  7.0  8.0  9.0

我想 Select 所有NaN行,也就是本例中的第二行,并用前一行填充它.

     0    1    2    3    4    5    6    7    8    9
0  0.0  1.0  2.0  3.0  4.0  5.0  6.0  7.0  NaN  NaN
1  0.0  1.0  2.0  3.0  4.0  5.0  6.0  7.0  NaN  NaN
2  0.0  1.0  2.0  3.0  4.0  5.0  6.0  7.0  8.0  9.0
3  NaN  NaN  0.0  1.0  2.0  3.0  4.0  5.0  6.0  7.0
4  0.0  1.0  2.0  3.0  4.0  5.0  6.0  7.0  8.0  9.0

如何做到这一点?非常感谢.

推荐答案

IIUC,您可以:

mask = df.isna().all(axis=1)

df.loc[mask, :] = df.loc[mask.shift(-1).fillna(False), :].values
print(df)

打印:

     0    1    2    3    4    5    6    7    8    9
0  0.0  1.0  2.0  3.0  4.0  5.0  6.0  7.0  NaN  NaN
1  0.0  1.0  2.0  3.0  4.0  5.0  6.0  7.0  NaN  NaN
2  0.0  1.0  2.0  3.0  4.0  5.0  6.0  7.0  8.0  9.0
3  NaN  NaN  0.0  1.0  2.0  3.0  4.0  5.0  6.0  7.0
4  0.0  1.0  2.0  3.0  4.0  5.0  6.0  7.0  8.0  9.0

Python相关问答推荐

从管道将Python应用程序部署到Azure Web应用程序,不包括需求包

Chatgpt API不断返回错误:404未能从API获取响应

Python在tuple上操作不会通过整个单词匹配

Pandas 第二小值有条件

Pydantic 2.7.0模型接受字符串日期时间或无

即使在可见的情况下也不相互作用

@Property方法上的inspect.getmembers出现意外行为,引发异常

Python解析整数格式说明符的规则?

driver. find_element无法通过class_name找到元素'""

当点击tkinter菜单而不是菜单选项时,如何执行命令?

通过ManyToMany字段与Through在Django Admin中过滤

使用Python查找、替换和调整PDF中的图像'

dask无groupby(ddf. agg([min,max])?''''

人口全部乱序 - Python—Matplotlib—映射

在用于Python的Bokeh包中设置按钮的样式

语法错误:文档. evaluate:表达式不是合法表达式

将CSS链接到HTML文件的问题

Pandas 数据帧中的枚举,不能在枚举列上执行GROUP BY吗?

如何写一个polars birame到DuckDB

如何在Polars中创建条件增量列?