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

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

將 Columns 轉換為 column+row 為 True 的行值

將 Columns 轉換為 column+row 為 True 的行值

泛舟湖上清波郎朗 2022-07-05 19:39:54
我有一個如下所示的數據集:    key f1  f2  f3      f4      f50   001 A   B   True    False   False1   002 C   D   False   True    False2   003 A   D   False   True    False3   004 C   B   False   False   True我想使用 pandas 將上述內容轉換為:    key f1  f2  state0   001 A   B   f31   002 C   D   f42   003 A   D   f43   004 C   B   f5簡而言之,如果該列的行值為 True,那么該列標簽應該成為名為 state 的列的新值。
查看完整描述

2 回答

?
慕哥9229398

TA貢獻1877條經驗 獲得超6個贊

一種方法是使用Dataframe.dot:


t = df.loc[:,'f3':]

df['state'] = t.dot(t.columns)

print(df.drop(t.columns, axis=1))


   key f1 f2 state

0    1  A  B    f3

1    2  C  D    f4

2    3  A  D    f4

3    4  C  B    f5

或者我們也可以使用idxmax:


df['state'] = t.idxmax(1)


查看完整回答
反對 回復 2022-07-05
?
臨摹微笑

TA貢獻1982條經驗 獲得超2個贊

我的一位同事給了我這個,它似乎完全符合預期。


pd.melt(df, id_vars=['key', 'f1', 'f2'],

       var_name = 'state')

      .query('value')

      .drop('value', axis=1)

輸出:


    key f1  f2  state

0   001 A   B   f3

5   002 C   D   f4

6   003 A   D   f4

11  004 C   B   f5


查看完整回答
反對 回復 2022-07-05
  • 2 回答
  • 0 關注
  • 125 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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