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

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

返回第一個非零值的列名

返回第一個非零值的列名

繁星點點滴滴 2023-08-03 17:30:50
我有一個數據框如下所示:name company count_2017 count_2018 count_2019 last_idjoe     abc     0           1         2         230283cindy   bcd     0           0         3         239382john    cde     1           1         0          238372wang    def     0           0         3          1332我輸入代碼為:df.apply(lambda x: x.iloc[x.nonzero()[0][0]], axis=1)此代碼將返回第一個非零值,但是我希望構建一個返回列名稱的數據框。返回的數據框如下所示:name count_2017 count_2018 count_2019  new_coljoe   0           1         2           2018cindy 0           0         3           2019john  1           1         0           2017wang  0           0         3           2019new_col = 第一個非零值的列名(刪除 count_)。有沒有辦法從我現有的代碼中進行編輯并返回 new_col ?
查看完整描述

2 回答

?
臨摹微笑

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

你可以試試這個:


columns = df.select_dtypes(int).columns


df["new_col"] = (df.select_dtypes(int)

                 .gt(0)

                 .dot(columns.str[-4:] + " ")

                 .str.split()

                 .str[0])

df


    name    count_2017  count_2018  count_2019  new_col

0   joe         0           1           2       2018

1   cindy       0           0           3       2019

2   john        1           1           0       2017

3   wang        0           0           3       2019


查看完整回答
反對 回復 2023-08-03
?
海綿寶寶撒

TA貢獻1809條經驗 獲得超8個贊

如果你的 DataFrame 看起來像:


    name  count_2017  count_2018  count_2019

0    joe           0           1           2

1  cindy           0           0           3

2   john           1           1           0

3   wang           0           0           3

然后:


df['new_col'] = df.iloc[:, 1:].apply(lambda x: next(c for v, c in zip(x, x.index) if v!=0).split('_')[-1], axis=1)

print(df)

印刷:


    name  count_2017  count_2018  count_2019 new_col

0    joe           0           1           2    2018

1  cindy           0           0           3    2019

2   john           1           1           0    2017

3   wang           0           0           3    2019


查看完整回答
反對 回復 2023-08-03
  • 2 回答
  • 0 關注
  • 149 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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