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

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

將多個條件應用于 python 數據框

將多個條件應用于 python 數據框

精慕HU 2023-09-05 15:13:56
我有一些在線任務的輸出,我需要將其整理成可用的評分形式,這需要多個條件才能正確整理。我嘗試使用 if 和 else 語句,但我很難以這種方式滿足所需的所有條件。所需數據和條件的描述 - 在第一列中,有與該人的響應相對應的三個可能值:“是”、“否”或“NR”(表示尚未給出響應)。第二列是一種計數器,應該按順序從 1 到 5 運行,但如果用戶按住按鍵時間過長,它會重復一個值。因此,對于第二列中的每個計數,我希望第一列中有一個相應的響應,這應該是針對該計數給出的第一個響應(“是”或“否”)。如果在整個計數期間沒有給出響應,則應保持為“NR”。然后計數再次從 1 到 5 重復。例如,這個輸入數據:   response  count0       yes      11       yes      12       yes      13        no      14       yes      15        no      26        no      27        no      28        NR      39        NR      310       no      311       NR      312       NR      413       NR      414       NR      415      yes      516      yes      517       NR      118       NR      119       NR      220      yes      321      yes      322      yes      323       no      424      yes      425       no      5應該減少到這樣:  response  count0      yes      11       no      22       no      33       NR      44      yes      55       NR      16       NR      27      yes      38       no      49       no      5這是一個有點令人困惑的問題,到目前為止,我還沒有找到應用于數組的條件組合或 if/else 語句來給我想要的結果。任何幫助或想法將不勝感激!輸入數據的源代碼:response = ['yes','yes','yes','no','yes','no','no','no','NR','NR','no','NR','NR','NR','NR','yes','yes','NR','NR','NR','yes','yes','yes','no','yes','no']count = [1,1,1,1,1,2,2,2,3,3,3,3,4,4,4,5,5,1,1,2,3,3,3,4,4,5]data_dict = {'response': response,            'count':count}data = pd.DataFrame(data_dict)
查看完整描述

1 回答

?
呼喚遠方

TA貢獻1856條經驗 獲得超11個贊

嘗試這個:


df.groupby(['count', (df['count'] != df['count'].shift()).cumsum()])['response']\

  .apply(lambda x: 'NR' if (x.nunique()==1) & (x == 'NR').all() else x.loc[x!='NR'].iloc[0])\

  .sort_index(level=1).reset_index(level=1, drop=True)

輸出:


count

1    yes

2     no

3     no

4     NR

5    yes

1     NR

2     NR

3    yes

4     no

5     no

Name: response, dtype: object

細節:


讓我們首先生成一個序列來獲取重復組:


(df['count'] != df['count'].shift()).cumsum()

使用這個系列以及“計數”,我們可以創建響應組,


如果唯一響應的計數等于 1 并且該響應為“NR”,則為該組返回“NR”。否則,使用 返回第一個不是“NR”的響應x.loc[X!='NR'].iloc[0]。


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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