gpt4 book ai didi

python - 当查找值不存在或为 null 时 pandas 查找的默认值

转载 作者:行者123 更新时间:2023-11-30 22:44:13 24 4
gpt4 key购买 nike

我有一个如下所示的数据框:

       parent region
estid
1 NaN A
2 NaN B
3 1.0 A
4 1.0 B
5 2.0 C
6 2.0 C
7 8.0 A

我想要的是创建一个额外的列,其中包含parentregion,如果在中找不到父级,则默认为None数据,例如:

       parent region parent_region
estid
1 NaN A None
2 NaN B None
3 1.0 A A
4 1.0 B A
5 2.0 C B
6 2.0 C B
7 8.0 A None

以下返回正确结果:

df["parent_region"] = df.apply(lambda x : df.loc[x["parent"]]["region"] if not math.isnan(x["parent"]) and x["parent"] in df.index else None, axis = 1)

但鉴于我的数据帧有 1.68 亿行,我非常担心效率低下。有更好的方法吗?我查看了 lookupget 但我不太清楚如何使用可能为 NaN 或不存在于数据框中的 ID .

例如,我认为这可以工作:df.lookup(df["region"], df["parent"]),但它不太喜欢空键。 df.get("region") 不返回父级的区域,而是返回列本身,因此它不执行我想要的操作。

最佳答案

您可以使用Series.map其功能类似于字典的方法。 parent 列和 region 列中的值用作构成它的键和值。如果它们之间共享公共(public)索引,则映射就会发生。

此外,na_action=ignore 可用于加速此映射过程,因为这些列中存在的所有 NaN 都将被完全忽略并简单地传播。

最后,必须使用 Series.replace 将缺失值替换为 None方法。

df["parent_region"] = df.parent.map(df.region, na_action='ignore').replace({np.NaN:None})
Out[121]:
estid
1 None
2 None
3 A
4 A
5 B
6 B
7 None
Name: parent_region, dtype: object

关于python - 当查找值不存在或为 null 时 pandas 查找的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41589810/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com