第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

將多個條件應(yīng)用于 python 數(shù)據(jù)框

將多個條件應(yīng)用于 python 數(shù)據(jù)框

精慕HU 2023-09-05 15:13:56
我有一些在線任務(wù)的輸出,我需要將其整理成可用的評分形式,這需要多個條件才能正確整理。我嘗試使用 if 和 else 語句,但我很難以這種方式滿足所需的所有條件。所需數(shù)據(jù)和條件的描述 - 在第一列中,有與該人的響應(yīng)相對應(yīng)的三個可能值:“是”、“否”或“NR”(表示尚未給出響應(yīng))。第二列是一種計數(shù)器,應(yīng)該按順序從 1 到 5 運行,但如果用戶按住按鍵時間過長,它會重復(fù)一個值。因此,對于第二列中的每個計數(shù),我希望第一列中有一個相應(yīng)的響應(yīng),這應(yīng)該是針對該計數(shù)給出的第一個響應(yīng)(“是”或“否”)。如果在整個計數(shù)期間沒有給出響應(yīng),則應(yīng)保持為“NR”。然后計數(shù)再次從 1 到 5 重復(fù)。例如,這個輸入數(shù)據(jù):   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應(yīng)該減少到這樣:  response  count0      yes      11       no      22       no      33       NR      44      yes      55       NR      16       NR      27      yes      38       no      49       no      5這是一個有點令人困惑的問題,到目前為止,我還沒有找到應(yīng)用于數(shù)組的條件組合或 if/else 語句來給我想要的結(jié)果。任何幫助或想法將不勝感激!輸入數(shù)據(jù)的源代碼: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條經(jīng)驗 獲得超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

細節(jié):


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


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

使用這個系列以及“計數(shù)”,我們可以創(chuàng)建響應(yīng)組,


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


查看完整回答
反對 回復(fù) 2023-09-05
  • 1 回答
  • 0 關(guān)注
  • 125 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號