【发布时间】:2018-12-20 21:20:59
【问题描述】:
我一直认为.map 和.replace 本质上是相同的,除了当你想传递不在提供的字典中的键值时你会使用.replace。但是,我很困惑为什么 .replace 在传递以元组为键的字典时会抛出 TypeError ,而 .map 在同一字典中按预期工作。
例如:
import pandas as pd
df = pd.DataFrame({'ID1': [1, 2, 3, 4, 5],
'ID2': ['A', 'B', 'C', 'D', 'E']})
df['tup_col'] = pd.Series(list(zip(df.ID1, df.ID2)))
dct = {(1, 'A'): 'apple', (3, 'C'): 'banana', (5, 'X'): 'orange'}
df.tup_col.map(dct)
#0 apple
#1 NaN
#2 banana
#3 NaN
#4 NaN
#Name: tup_col, dtype: object
df.tup_col.replace(dct)
TypeError:无法比较类型 'ndarray(dtype=object)' 和 'tuple'
那么对于以元组作为键的字典,我可以不使用replace 吗?
【问题讨论】:
-
查看文档,功能不相关。
replace似乎与apply相关,而不是map。该文档还说您可以使用嵌套字典,但是在您的示例中尝试我得到“元组没有方法替换”,所以这也不起作用。
标签: python pandas dictionary series