我正在尝试使用查找代码向Python数据框添加新列。我尝试了几种方法,但新列总是返回空白。
我的大型数据框有
列file:
input_code
20
21
20
(注意一些空行),我的查找字典是:
lookup = {'20':'1' , '21':'4', '22':'3'}
我尝试过其他一些例子中提到的几个不同的建议,例如:
file['output'] = file['input_code'].map(lookup)
file['output'] = np.where(file['input_code']=='21','4','')
file['output'] = file['input_code'].map(lambda x: lookup.get(x,np.nan)
以及尝试加入/合并查找字典的数据框版本。这些都没有抛出任何错误,但所有错误都将文件['output']作为NaN列返回。
我唯一可以想到的是它与数据类型有关 - 文件['input_code']的dtype是一个对象,但我不够精通,不知道具体细节,以及我改变的任何尝试dtype似乎也不起作用。
非常感谢任何指导。
答案 0 :(得分:0)
您是否尝试过apply()
?
<强>代码:强>
import pandas as pd
import numpy as np
df = pd.DataFrame(['20', '21', '', '22'], columns=['input_code'])
print(df)
print(df.dtypes)
lookup = {'20': '1', '21': '4', '22': '3'}
df['output'] = df.input_code.apply(lambda x: lookup.get(x, np.nan))
print(df)
<强>结果:强>
input_code
0 20
1 21
2
3 22
input_code object
dtype: object
input_code output
0 20 1
1 21 4
2 NaN
3 22 3