Python Pandas-将列值与字典中的值进行比较

Python Pandas-将列值与字典中的值进行比较,python,pandas,dictionary,Python,Pandas,Dictionary,我有一本字典 d = {1:a,2:a} d = {1: 'a', 2: 'a'} 我还有一个熊猫架“df” 由于某些原因,我无法将x值与字典键匹配: for index, row in df.iterrows(): for x,y in d.items(): if row['x'] == x: print "Got a Match" else: print "No Match Found" 我得到的只

我有一本字典

d = {1:a,2:a}
d = {1: 'a', 2: 'a'}
我还有一个熊猫架“df”

由于某些原因,我无法将x值与字典键匹配:

for index, row in df.iterrows():
    for x,y in d.items():
        if row['x'] == x:
            print "Got a Match"
        else:
            print "No Match Found"
我得到的只是“找不到匹配项”。我做错什么了吗?pandas系列中的数据是“float64”,字典中的键是“int”,但我将pandas系列转换为int,仍然无法匹配这些项。谢谢你的帮助


谢谢

考虑一下这个
df

   x   y
0       
1  1  10
2  2  56
3  3  11
和字典

d = {1:a,2:a}
d = {1: 'a', 2: 'a'}
当您使用
pd.Series.map
时,它会在可能的地方填充,并在不存在键的地方返回
NaN
。这有助于识别
x
的匹配位置,并在以后替换值

df.x.map(d)

0
1      a
2      a
3    NaN
Name: x, dtype: object


如果要基于字典创建新列,可以使用:


用同样的代码试试itertuples它对我来说很好,你使用的是什么python版本?还有,你的问题的最终目的是什么。似乎不需要循环。你能提供更多的信息吗。为了在内部循环中进行调试,请使用print函数获取更多信息:
print(row['x'],x)
Python 3.5、Pandas 0.18…实际的数据帧和字典要大得多。最终目的是使用与字典中每个键关联的值调整数据帧中的不同列。我正在进行打印(行['x'],x),并且数字都显示为匹配项,但是for循环仍然不起作用。
>>> df['n'] = df['x'].map(d)
>>> df
    x   y     n
1   1  10  val1
2  10  56   NaN