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

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

如何使用其他列中有時(shí)包含 np.nan 的字符串填充 df 列,通過 elifs 迭代以返回適當(dāng)

如何使用其他列中有時(shí)包含 np.nan 的字符串填充 df 列,通過 elifs 迭代以返回適當(dāng)

慕絲7291255 2023-12-12 21:32:49
具有不完美數(shù)據(jù)的 df:df = pd.DataFrame({'A Surname' : ['Smith', 'Longshore', 'Jones'],                        'A Title': ['Mr', 'Miss', np.nan],                       'B Surname' : ['Smith', np.nan, 'Nguyen'],                        'B Title': ['Mrs', np.nan, np.nan]})我正在尋找一列,該列包含適合在可能的情況下同時(shí)尋址 A 和 B 的字符串。如果有np.nan,則組合字段返回np.nan,并且它需要符合邏輯(例如,如果“B姓氏”是np.nan,則不要使用“B標(biāo)題”),所以我需要一系列規(guī)則來確定最合適的組合。我不成功的做法:def combined(x):    full = df['A Title'] + ' ' & df['A Surname'] & ' & ' & df['B Title'] & ' ' & df['B Surname']    no_title = df['A Surname'] & ' & ' & df['B Surname']    # more combinations    if full != np.nan:        return full    elif no_title != np.nan:        return no_title    # more elifs    else:        return df['A Surname']        df['combined string'] = np.nandf['combined string'] = df['combined string'].apply(combined)所需的輸出如下所示:desired_df = pd.DataFrame({'A Surname' : ['Smith', 'Longshore', 'Jones'],                        'A Title': ['Mr', 'Miss', 'Mr'],                       'B Surname' : ['Smith', np.nan, 'Whatever'],                        'B Title': ['Mrs', np.nan, np.nan],                       'combined string': ['Mr Smith & Mrs Smith', 'Miss Longshore', 'Jones & Whatever']})有什么實(shí)際的方法可以做到這一點(diǎn)?
查看完整描述

2 回答

?
滄海一幻覺

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

Series.str.cat與這里一起使用Series.str.strip

a = df['A Title'].str.cat(df['A Surname'], sep=' ', na_rep='').str.strip()

b = df['B Title'].str.cat(df['B Surname'], sep=' ', na_rep='').str.strip()

df['combined string'] = a.str.cat(b, sep=' & ').str.strip(' &')

print (df)

? ?A Surname A Title B Surname B Title? ? ? ?combined string

0? ? ? Smith? ? ? Mr? ? ?Smith? ? ?Mrs? Mr Smith & Mrs Smith

1? Longshore? ? Miss? ? ? ?NaN? ? ?NaN? ? ? ? Miss Longshore

2? ? ? Jones? ? ?NaN? ? Nguyen? ? ?NaN? ? ? ? Jones & Nguyen


查看完整回答
反對(duì) 回復(fù) 2023-12-12
?
qq_遁去的一_1

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

找到了一個(gè)將函數(shù)與 一起應(yīng)用的解決方案axis=1,允許引用函數(shù)中的其他列。


def combined(x):

    if x['B Surname'] == '':

        if x['A Title'] == '':

            return x['A Surname']

        else:

            return x['A Title'] + ' ' + x['A Surname']

    else:

        if (x['A Title'] == '') or (x['B Title'] == ''):

            return x['A Surname'] + ' & ' + x['B Surname']

        else:

            return x['A Title'] + ' ' +  x['A Surname'] + ' & ' + x['B Title'] + ' ' + x['B Surname']



df = df.fillna('')

df['combined string'] = df.apply(combined, axis=1)

np.nan 值必須轉(zhuǎn)換為空字符串,因?yàn)槲覠o法弄清楚如何避免將 np.nans 轉(zhuǎn)換為“nan”字符串或在函數(shù)內(nèi)重新分配列值。


注意df = df.fillna('')適用于整個(gè) df。所有空字符串都可以通過以下方式轉(zhuǎn)換為 nandf = df.replace(r'^\s*$', np.nan, regex=True)


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

添加回答

舉報(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)