2 回答

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

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
添加回答
舉報