我有以下df条:

df = pd.DataFrame({
    'col1': [1, np.nan, np.nan, np.nan, 1, np.nan, np.nan, np.nan],
    'col2': [np.nan, 2, np.nan, np.nan, np.nan, 2, np.nan, np.nan],
    'col3': [np.nan, np.nan, 3, np.nan, np.nan, np.nan, 3, np.nan],
    'col4': [np.nan, np.nan, np.nan, 4, np.nan, np.nan, np.nan, 4]
    })

它有以下显示:

    col1 col2 col3 col4
0   1.0 NaN NaN NaN
1   NaN 2.0 NaN NaN
2   NaN NaN 3.0 NaN
3   NaN NaN NaN 4.0
4   5.0 NaN NaN NaN
5   NaN 6.0 NaN NaN
6   NaN NaN 7.0 NaN
7   NaN NaN NaN 8.0

我的目标是让所有行都以float(不是NaN值)开头,并将其余行连接起来.

我想要的new_df是:

    col1 col2 col3 col4
0   1   2   3   4
4   5   6   7   8

你方的任何帮助都将受到高度感谢(我支持所有答案).

谢谢!

推荐答案

如果需要联接由df['col1']个非缺失值定义的每个组的第一个值,请使用:

df = (df.reset_index()
        .groupby(df['col1'].notna().cumsum())
        .first()
        .set_index('index'))

Python相关问答推荐

重置PD帧中的值

PYTHON、VLC、RTSP.屏幕截图不起作用

Flask运行时无法在Python中打印到控制台

Python pint将1/华氏度转换为1/摄氏度°°

如何获得3D点的平移和旋转,给定的点已经旋转?

使用Python TCP套接字发送整数并使用C#接收—接收正确数据时出错

如何重新组织我的Pandas DataFrame,使列名成为列值?

如何获得满足掩码条件的第一行的索引?

如何防止html代码出现在quarto gfm报告中的pandas表之上

修改.pdb文件中的值并另存为新的

启动线程时,Python键盘模块冻结/不工作

合并Pandas中的数据帧,但处理不存在的列

Pandas:新列,从列表中采样,基于列值

当我的自定义对象用作Pydtic模型中的默认参数时,它不会被深度复制

在Python中比较函数参数和回调函数的正确方法

TypeError:Py集群库中未调整大小的对象的Len()

如果任务100%占用CPU,为什么这个多线程代码比顺序代码快?--Python3.10

将共同的交付成果分解为单独的变量

将Python代码转换为C语言的挑战:实现用于校验和计算的Luhn算法

基于多个条件和未知数的数据抽取算法