我的問題與此類似,但答案似乎并不完全有效!根據條件合并行 pandas 數據框給定以下 pandas 數據框:+---------+-----------------+-----------------+| SECTION | TEXT | NUMBER_OF_WORDS |+---------+-----------------+-----------------+| ONE | lots of text… | 55 |+---------+-----------------+-----------------+| ONE | word1 | 1 |+---------+-----------------+-----------------+| ONE | lots of text… | 151 |+---------+-----------------+-----------------+| ONE | word2 | 1 |+---------+-----------------+-----------------+| ONE | word3 | 1 |+---------+-----------------+-----------------+| ONE | word4 | 1 |+---------+-----------------+-----------------+| TWO | lots of text… | 523 |+---------+-----------------+-----------------+| TWO | lots of text… | 123 |+---------+-----------------+-----------------+| TWO | word4 | 1 |+---------+-----------------+-----------------+如果 NUMBER_OF_WORDS 列中的值為 1;它必須與上面的行結合起來;前提是它們具有相同的 SECTION 值。這是代碼;這似乎有效,但不是我想要的。df.groupby(['SECTION', (df.NUMBER_OF_WORDS.shift(1) == 1)], as_index=False, sort=False).agg({'TEXT': lambda x: ', '.join(x), 'NUMBER_OF_WORDS': lambda x: sum(x)})
1 回答

桃花長相依
TA貢獻1860條經驗 獲得超8個贊
讓我們嘗試groupby
一下cumsum
s = df['NUMBER_OF_WORDS'].ne(1).cumsum() out = df.groupby(s).agg({'SECTION':'first','TEXT':','.join,'NUMBER_OF_WORDS':'sum'})
添加回答
舉報
0/150
提交
取消