Python使用返回空格的查找代码添加数据帧列

时间:2017-05-16 19:22:47

标签: python dictionary dataframe lookup

我正在尝试使用查找代码向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似乎也不起作用。

非常感谢任何指导。

1 个答案:

答案 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