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

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

將字典值加載到 Pandas 中數(shù)據(jù)幀的行值中

將字典值加載到 Pandas 中數(shù)據(jù)幀的行值中

慕工程0101907 2021-10-26 15:45:09
我有一個 python 字典{1:cat,  2:dog,  3:sheep,  4:foo,  5:bar,  6:fish,  7:lion,  8:shark,  9:zebra,  10:snake}我還有熊貓數(shù)據(jù)框如下 df:ID    col1    col2    col2   col418938   1       Nan     5      Nan17839  Nan      2      Nan     872902   3       5       9      Nan78298   7       Nan    Nan     6現(xiàn)在我正在嘗試將每列中每個單元格的值替換或映射到字典值,并嘗試將concat所有列值都映射到一個新列。新的df應該是這樣的:ID    col1    col2    col2   col4     new_col18938  cat      Nan    bar     Nan     cat|bar17839  Nan      dog    Nan    shark    dog|shark72902  sheep    bar   zebra    Nan    sheep|bar|zebra78298  lion     Nan    Nan    fish     lion|fish我正在嘗試實現(xiàn)第二步,即concat使用代碼的所有列df['new_col'] = df.drop('ID',1).agg(lambda x: '|'.join(x.dropna().astype(str).values), axis=1)但我無法讓第一步工作我用了df = df.columns.map(dict)但它沒有給我我需要的預期答案。
查看完整描述

2 回答

?
慕虎7371278

TA貢獻1802條經(jīng)驗 獲得超4個贊

你可以試試這個:


df = df.set_index('ID')

d1 = pd.concat([df[i].replace('Nan',pd.np.nan).dropna().astype(int).map(d) for i in df.columns], axis=1)

d1['new_col'] = d1.apply(lambda x: '|'.join(x.dropna()), axis=1)

print(d1)

或者,如果您想要更慢但更簡潔的代碼:


d1 = df.apply(lambda x: x.replace('Nan',pd.np.nan).dropna().astype(int).map(d))

d1['new_col'] = d1.apply(lambda x: '|'.join(x.dropna()), axis=1)

d1

輸出:


        col1 col2 col2.1   col4          new_col

ID                                              

17839    NaN  dog    NaN  shark        dog|shark

18938    cat  NaN    bar    NaN          cat|bar

72902  sheep  bar  zebra    NaN  sheep|bar|zebra

78298   lion  NaN    NaN   fish        lion|fish


查看完整回答
反對 回復 2021-10-26
?
慕碼人2483693

TA貢獻1860條經(jīng)驗 獲得超9個贊

使用df.replace():


df = df.replace(dict)

請注意,如果您的字典中的鍵是字符串,您可能需要regex=True:


df = df.replace(dict, regex=True)

例子:


import pandas as pd


d = {1:"cat",

  2:"dog",

  3:"sheep",

  4:"foo",

  5:"bar",

  6:"fish",

  7:"lion",

  8:"shark",

  9:"zebra",

  10:"snake"}


df = pd.DataFrame({'ID': [123, 456], 'col1': [1, 2], 'col2': [5, 6]})

df = df.replace(d)


print(df)

輸出:


    ID col1  col2

0  123  cat   bar

1  456  dog  fish


查看完整回答
反對 回復 2021-10-26
  • 2 回答
  • 0 關注
  • 223 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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