首页 > 解决方案 > 如何在特定条件下组合熊猫中的连续行

问题描述

我有一个数据集,由于 OCR 有点脏。示例如下所示:

    date    float_col1  float_col2  txt_col
0   12/17/2019  0.00    5012.41 some string1
1   12/26/2019  0.00    0.30    some string2
2   NaN         1.98    0.00    some string3
3   01/06/2020  0.00    673.01  some string4
4   NaN         0.00    0.00    some string5
5   NaN       786.60    0.00    some string6

我想合并第 4 行和第 5 行,因为它们应该属于一起。

条件是如果 float_col1 和 float_col1 都是 NA 那么它们应该被组合。

数据集应如下所示:

    date    float_col1  float_col2  txt_col
0   12/17/2019  0.00    5012.41 some string1
1   12/26/2019  0.00    0.30    some string2
2   NaN         1.98    0.00    some string3
3   01/06/2020  0.00    673.01  some string4
4   NaN       786.60    0.00    some string5 some string6

谢谢。

标签: pythonpandas

解决方案


我们首先需要fillnaNaN ,因为np.nan不等于它自己,然后我们只需gorupby使用, 使用由andagg创建的新密钥shiftcumsum

df.date.fillna('NaN',inplace=True)
fund={'date':'first','float_col1':'sum','float_col2':'sum','txt_col':','.join}
newdf=df.groupby(df.date.ne(df.date.shift()).cumsum()).agg(fund)
Out[28]: 
            date  float_col1  float_col2                  txt_col
date                                                             
1     12/17/2019        0.00     5012.41              somestring1
2     12/26/2019        0.00        0.30              somestring2
3            NaN        1.98        0.00              somestring3
4     01/06/2020        0.00      673.01              somestring4
5            NaN      786.60        0.00  somestring5,somestring6

推荐阅读