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

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

從數(shù)據(jù)框中查找/搜索值以創(chuàng)建新列

從數(shù)據(jù)框中查找/搜索值以創(chuàng)建新列

浮云間 2022-05-24 15:36:12
我正在嘗試根據(jù)從其他列和行中搜索數(shù)據(jù)在數(shù)據(jù)框中創(chuàng)建新列。計(jì)算此類列值的最佳/禁食方法是什么。我嘗試過使用 lambda 和外部函數(shù),但沒有結(jié)果。有人可以詳細(xì)說明獲得最終結(jié)果的方法以及從計(jì)算時間來看哪種方法是最佳的。我們可以分配函數(shù)/lambda 來計(jì)算這些值嗎?我們可以實(shí)現(xiàn)數(shù)據(jù)框,它會保持引用函數(shù)計(jì)算列中的值而不是計(jì)算值本身嗎?基于其他列/行中的數(shù)據(jù)的動態(tài)結(jié)果。data = {             'ID':[1, 2, 3, 4 ,5],                              'Name':['Andy', 'Rob', 'Tony', 'John', 'Lui'],            'M_Name':['Lui', 'Lui', 'Lui','NoData', 'John']             } df = pd.DataFrame(data) Original DataFrame:    ID  M_Name  Name0   1     Lui  Andy1   2     Lui   Rob2   3     Lui  Tony3   4  NoData  John4   5    John   Luidata_after = {             'ID':[1, 2, 3, 4 ,5],                              'Name':['Andy', 'Rob', 'Tony', 'John', 'Lui'],            'M_Name':['Lui', 'Lui', 'Lui','NoData', 'John'],                'ID_by_M_Name':[5, 5, 5, 'NoData', '4']             } df1 = pd.DataFrame(data_after)Processed DataFrame:    ID ID_by_M_Name  M_Name  Name0   1          5     Lui  Andy1   2          5     Lui   Rob2   3          5     Lui  Tony3   4     NoData  NoData  John4   5          4    John   LuiI have tried two ways to get ID but not sure how to use them in assigngetID = lambda name: df.loc[df['Name'] == name]['ID'].iloc[0]def mID(name):    return df.loc[df['Name'] == name]['ID'].iloc[0]For each row we want to find ID of M_Name for specifc Name. e.g. for Name='Andy' we have M_Name = 'Lui' and Lui's ID(5)For Lui M_name is John and John's ID is 4print(getID('Lui'))print(mID('Lui'))df['ID'] = df.assign(mID(df['M_Name']), axis=1 )IndexError:單個位置索引器超出范圍
查看完整描述

1 回答

?
森欄

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

使用Series.replaceor :Series.map_Series.fillna


df['ID_by_M_Name'] = df['M_Name'].replace(df.set_index('Name')['ID'])

#assign alternative

#df = df.assign(ID_by_M_Name = df['M_Name'].replace(df.set_index('Name')['ID']))

df['ID_by_M_Name'] = df['M_Name'].map(df.set_index('Name')['ID']).fillna(df['M_Name'])

#assign alternative

#df=df.assign(ID_by_M_Name=df['M_Name'].map(df.set_index('Name')['ID']).fillna(df['M_Name']))

print (df)


   ID  Name  M_Name ID_by_M_Name

0   1  Andy     Lui            5

1   2   Rob     Lui            5

2   3  Tony     Lui            5

3   4  John  NoData       NoData

4   5   Lui    John            4

如果新列的重要位置使用DataFrame.insert:


df.insert(1, 'ID_by_M_Name', df['M_Name'].replace(df.set_index('Name')['ID']))

print (df)


   ID ID_by_M_Name  Name  M_Name

0   1            5  Andy     Lui

1   2            5   Rob     Lui

2   3            5  Tony     Lui

3   4       NoData  John  NoData

4   5            4   Lui    John


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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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