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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何根據(jù)入口條件過濾已經(jīng)包含 NaN 的數(shù)據(jù)框?

如何根據(jù)入口條件過濾已經(jīng)包含 NaN 的數(shù)據(jù)框?

慕勒3428872 2023-03-08 16:03:40
我從一個(gè)數(shù)據(jù)幀開始,我想根據(jù)輸入值的條件將它分成三個(gè)數(shù)據(jù)幀。對(duì)于 df1,我只想讓 Person_X 值 <0.33。對(duì)于 df2,我希望只有 0.34<Person_X 值<0.65。對(duì)于 df3,我只想讓 Person_X 值 >0.66。我希望 NaN 替換不符合要求的整數(shù)值。所以,從 df 開始:In [1]: df=pd.DataFrame({'location':[4991, 8870, 2703, 9674],    ...:                  'Person_1': ['NaN', 0.2,0.5,0.7],    ...:                  'Person_2':[0.8, 0.45, 'NaN', 0.1]})    ...: df                                                                      Out[1]:    location Person_1 Person_20      4991      NaN      0.81      8870      0.2     0.452      2703      0.5      NaN3      9674      0.7      0.1我想要三個(gè)看起來(lái)像的數(shù)據(jù)框: df1   location Person_1 Person_20      4991      NaN      NaN1      8870      0.2     NaN2      2703      NaN     NaN3      9674      NaN      0.1df2 Out[4]:    location Person_1 Person_20      4991      NaN      NaN1      8870      NaN     0.452      2703      0.5      NaN3      9674      NaN      NaNdf3 Out[4]:    location Person_1 Person_20      4991      NaN      0.81      8870      NaN      NaN2      2703      NaN      NaN3      9674      0.7      NaN我已經(jīng)針對(duì)每個(gè)要求嘗試過類似的方法,但是由于 df 已經(jīng)包含 NaN,所以我遇到了問題。patient_cols=[col for col in df if col.startswith('Person')]df[patient_cols]=df[patient_cols].applymap(lambda x: np.nan if x>0.33 else x)df[patient_cols]
查看完整描述

1 回答

?
烙印99

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超13個(gè)贊

讓我們使用pd.DataFrame.where

df=pd.DataFrame({'location':[4991, 8870, 2703, 9674], 

   'Person_1': [np.nan, 0.2,0.5,0.7], 

                     'Person_2':[0.8, 0.45, np.nan, 0.1]})  


#Just incase your NaN are strings as indicated by your original posts.

df=df.replace('NaN', np.nan) 


df= df.set_index('location')


df1 = df.where(df<.33).reset_index()

df2 = df.where((df>.34) & (df<.65)).reset_index()

df3 = df.where(df>.66).reset_index()


print(df1)

print('\n')

print(df2)

print('\n')

print(df3)

輸出:


   location  Person_1  Person_2

0      4991       NaN       NaN

1      8870       0.2       NaN

2      2703       NaN       NaN

3      9674       NaN       0.1


   location  Person_1  Person_2

0      4991       NaN       NaN

1      8870       NaN      0.45

2      2703       0.5       NaN

3      9674       NaN       NaN


   location  Person_1  Person_2

0      4991       NaN       0.8

1      8870       NaN       NaN

2      2703       NaN       NaN

3      9674       0.7       NaN


查看完整回答
反對(duì) 回復(fù) 2023-03-08
  • 1 回答
  • 0 關(guān)注
  • 103 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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