我在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 值。
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 一样好。
本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处
评论列表(15条)