将列表列表映射到Pandas系列

2024-04-20 07:49:02 发布

您现在位置:Python中文网/ 问答频道 /正文

Python新手。简单的问题让我头晕目眩。在

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

my_series = pd.Series([(1,2), (2,3), (1,3)])

我还有一个“查找”列表,如下所示:

^{pr2}$

1)我想知道如何将我的“U”系列中的每一对替换为“我的”查找中的相应值。在这种情况下,我的系列应该变成pd系列([2,6,5])。在

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

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

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似乎不喜欢这样,所以我尝试另一种方法。在


Tags: 答案功能df列表字典my情况序列
1条回答
网友
1楼 · 发布于 2024-04-20 07:49:02

你用字典绝对是对的。在

你的“钥匙”有可能改变吗?从您系列的初始声明来看,看起来它们不会,但是您确实在my_lookup中以列表的形式存在。在

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

d = {tuple(k): v for k,v in my_lookup}

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

^{pr2}$

如果不是每个键都在查找中,则需要确定是否存在合理的默认值。如果有,您可以在字典上使用.get

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

如果不是,可以使用None作为默认值,然后对结果序列进行筛选以删除None的值。在

相关问题 更多 >