gpt4 book ai didi

python - Pandas :用相同重复名称/键组的第一个值填充空值

转载 作者:行者123 更新时间:2023-12-02 16:11:41 25 4
gpt4 key购买 nike

我有一个包含 2 列的数据框:nameid

name 列中,我有几个重复项,在 id 列中,我为相同 name 的重复项设置了一个空值.

我想要的是用第一次迭代的值填充那个空值

例如:

df1=pd.DataFrame(columns=["name","id"])
df1["name"]=["a","b","c","a","d","e","b"]
df1["id"]=[1,2,3,"",4,5,""]


name id
0 a 1
1 b 2
2 c 3
3 a
4 d 4
5 e 5
6 b

对于 "a""b" 的第二次迭代,我有一个空值

我想要的:

df1["id"]=[1,2,3,1,4,5,2]

如何用第一次迭代的值填充该空值?

最佳答案

您可以按 .groupby() 对名称进行分组并通过 .transform('first') 获得每组的第一个条目.然后用 .fillna() 同名组中的这些第一个条目替换空字符串,如下:

df1['id'] = df1['id'].replace('', np.nan).fillna(df1.groupby('name')['id'].transform('first')).astype(int)

如果您的 id 列已经包含一些 NaN 值并且您不想触及这些值,您也可以使用 .mask()有条件地用 groupby .transform('first') 替换空字符串值值,如下所示:

df1['id'] = df1['id'].mask(df1['id'] == '', df1.groupby('name')['id'].transform('first'))

结果:

print(df)

name id
0 a 1
1 b 2
2 c 3
3 a 1
4 d 4
5 e 5
6 b 2

关于python - Pandas :用相同重复名称/键组的第一个值填充空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67819107/

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