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

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

根據條件將列值轉換為列表列

根據條件將列值轉換為列表列

DIEA 2021-10-26 16:07:29
數據集為:   id  col2  col30   1     1   1231   1     1   2342   1     0   3453   2     1   4564   2     0  12435   2     0   3466   3     0   8887   3     0   9998   3     0   777我想按 聚合數據id,并且col3僅當其對應的值為col21時才將 的值附加到列表中。此外,對于id只有 0 的人(不同的)col2,我喜歡聚合值為 0 且為col2空的列表col3。這是當前的代碼:df_test = pd.DataFrame({'id':[1, 1, 1, 2, 2, 2, 3, 3, 3], 'col2':[1, 1, 0, 1, 0, 0, 0, 0, 0], 'col3':[123, 234, 345, 456, 1243, 346, 888, 999, 777]})df_test_agg = pd.pivot_table(df_test, index=['id'], values=['col2', 'col3'], aggfunc={'col2':np.max, 'col3':(lambda x:list(x))})print (df_test_agg)    col2              col3id                        1      1   [123, 234, 345]2      1  [456, 1243, 346]3      0   [888, 999, 777]所需的輸出應該是(最好在 Pandas 中一步完成):    col2              col3id                        1      1            [123, 234]2      1            [456]3      0            []////////////////////////////////////////////////// ///////////////////////////////////////編輯 - 嘗試 ColdSpeed 的解決方案df_test = pd.DataFrame({'id':[1, 1, 1, 2, 2, 2, 3, 3, 3], 'col2':[1, 1, 0, 1, 0, 0, 0, 0, 0], 'col3':[123, 234, 345, 456, 1243, 346, 888, 999, 777]})print (df_test)df_test_agg = (df_test.where(df_test.col2 > 0)    .assign(id=df_test.id)    .groupby('id')    .agg({'col2': 'max', 'col3': lambda x: x.dropna().tolist()}))print (df_test_agg)   id  col2  col30   1     1   1231   1     1   2342   1     0   3453   2     1   4564   2     0  12435   2     0   3466   3     0   8887   3     0   9998   3     0   777    col2            col3id                      1    1.0  [123.0, 234.0]2    1.0         [456.0]3    NaN              []////////////////////////////////////////////////// ///////////////////////////////////////編輯原始帖子以呈現更多場景。
查看完整描述

1 回答

  • 1 回答
  • 0 關注
  • 183 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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