Python 将列表映射到熊猫系列

Python 将列表映射到熊猫系列,python,list,map,Python,List,Map,Python新手。这是一个让我头晕目眩的简单问题 假设我有一个熊猫系列,如下所示: my_series = pd.Series([(1,2), (2,3), (1,3)]) my_lookup = [([0,1], 0), ([1,1], 1), ([1,2], 2), ([2,2], 3), ([0,3], 4), ([1,3], 5), ([2,3], 6)] 我还有一个“查找”列表,如下所示: my_series = pd.Series([(1,2), (2,3), (1,3)])

Python新手。这是一个让我头晕目眩的简单问题

假设我有一个熊猫系列,如下所示:

my_series = pd.Series([(1,2), (2,3), (1,3)])
my_lookup = [([0,1], 0), ([1,1], 1), ([1,2], 2), ([2,2], 3), ([0,3], 4), ([1,3], 5), ([2,3], 6)]
我还有一个“查找”列表,如下所示:

my_series = pd.Series([(1,2), (2,3), (1,3)])
my_lookup = [([0,1], 0), ([1,1], 1), ([1,2], 2), ([2,2], 3), ([0,3], 4), ([1,3], 5), ([2,3], 6)]
1) 我想知道如何在我的\u查找中用它的对应值替换我的\u系列中的每一对。在这种情况下,my_系列应该成为pd.系列([2,6,5])

2) 我想知道如何用相应的值创建一个新的序列,而不是像前面的问题那样替换

3) 如果不是每个“键”都在我的查找中,答案是否会改变?例如,如果my_lookup改为:

my_lookup = [([0,1], 0), ([1,1], 1), ([2,2], 3), ([0,3], 4), ([1,3], 5), ([2,3], 6)]
编辑:我想使用字典和映射功能,如下所示:

df["Gender"] = df["Sex"].map({"female":0, "male":1}).astype(int)

…但我的关键是列表,Python似乎不喜欢列表,所以我尝试了另一种方法。

使用字典肯定是正确的

你的“钥匙”可能会改变吗?从系列的初始声明来看,它们似乎不会,但在
my_lookup
中确实有它们作为列表

如果它们的键不变,您可以将它们转换为元组,并将它们用作字典中的键。例如(在普通python中,因为我没有在这台计算机上安装pandas进行测试):

然后,要替换系列中的每个键,可以执行以下操作:

fReplace = lambda k: d[k]
new_series = map(fReplace, my_series) # or my_series.map if you're in pandas

# alternatively (and there's probably a nicer way, I don't have pandas to play with)
new_series = pd.Series(map(fReplace, my_series))
如果不是每个键都在查找中,则需要确定是否存在合理的默认值。如果有,您可以使用词典中的
。获取

fReplace = lambda k: d.get(k, sensible_default_value)

如果没有,您可以使用,比如说,
None
作为默认值,然后过滤到生成的序列,以删除成功的
None

值!非常感谢你的精彩解释。