复制行值并粘贴到下一个空行中,直到找到下一个值为止

2024-09-25 00:23:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将第一行的值复制到下面的值中,直到满足下一个值,然后复制下一个值并复制相同的过程。 初始数据帧如下所示

df = pd.DataFrame(np.array([[1, 2, '',''], ['', '', 'nunu','lala'], ['', '', 'tata','toto'],[7, 8, '',''],['', '', 'zaza','zeze'],['', '', 'yyu','uyuy'],['', '', 'rfrf','gbgb']]),
               columns=['a', 'b', 'c','d'])

结果是这样的

df2 = pd.DataFrame(np.array([[1, 2, 'nunu','lala'], [1, 2, 'tata','toto'],[7, 8, 'zaza','zeze'],[7, 8, 'yyu','uyuy'],[7, 8, 'rfrf','gbgb']]),
               columns=['a', 'b', 'c','d'])

这在熊猫身上可行吗


Tags: columnsdataframenparraypdtotolalatata
2条回答

IIUC:

尝试将空字符替换为“NaN”,然后前进+后退填充,然后删除重复字符:

df=df.replace('',float('NaN')).ffill().bfill().drop_duplicates(['c'])

df的输出:

    a   b   c       d
0   1   2   nunu    lala
2   1   2   tata    toto
4   7   8   zaza    zeze
5   7   8   yyu     uyuy
6   7   8   rfrf    gbgb

您可以结合使用^{}和切片:

# replace empty strings with NaN
df2 = df.replace('', float('nan'))
# keep index of rows to drop
idx = df2['c'].isna()
# fill forward, drop unwanted rows and reset_index
df2.ffill()[~idx].reset_index()

输出:

    a   b   c       d
0   1   2   nunu    lala
2   1   2   tata    toto
4   7   8   zaza    zeze
5   7   8   yyu     uyuy
6   7   8   rfrf    gbgb

相关问题 更多 >