应用价值:在具有应用价值的数据框中使用 fillna

我在dataframe中有一个列,对于少量的行,它的值为 None。

id     parent_id
1      1001
2      1001
3      1002
4      1002
5      None

现在我想为每个值为None的记录分配一个uuid4()

我目前使用此方法基于Using isnull() and groupby() on a pandas dataframe

df['uuid'] = df.apply(lambda _: uuid.uuid4(), axis = 1)
df['parent_id_na'] = df['parent_id'].fillna(df_asins['uuid'])

缺点是为每个值生成一个uuid非常耗时,大多数都被丢弃了。有没有更好的方法来触发仅在parent_id == None的值上应用函数

我试过:

df = df.assign(parent_id = lambda x: x['parent_id'] if not (x['parent_id'].isnull) else uuid.uuid4())

但这会为所有值返回一个uuid,即使parent_id中有一个非 None 值。

0
import numpy as np
a = np.where(df['parent_id'].isnull(), uuid.uuid4(), float("nan"))
df["parent_id"] = df['parent_id'].where(~df['parent_id'].isnull(), a)

尝试这样的事情我 ussually 浮动(“南”),而不是没有,即使这与 None 一样好。

本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处

(253)
小程序功能模块:路由功能模块与路由功能模块
上一篇
北向接口:如何在geopandas地图上添加“北向箭头”
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(7条)