亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Pandas 根據條件組合連續行

Pandas 根據條件組合連續行

心有法竹 2023-12-29 15:40:22
我的問題與此類似,但答案似乎并不完全有效!根據條件合并行 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'})



查看完整回答
反對 回復 2023-12-29
  • 1 回答
  • 0 關注
  • 145 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號