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