Python 查找重复项并填充列
我有一个由两列组成的数据框架:name和id 在“名称”列中,我有两个重复项,在“id”列中,我有一个空的重复项值 我想要的是用第一次迭代的值填充这个空值 例如:Python 查找重复项并填充列,python,pandas,Python,Pandas,我有一个由两列组成的数据框架:name和id 在“名称”列中,我有两个重复项,在“id”列中,我有一个空的重复项值 我想要的是用第一次迭代的值填充这个空值 例如: df1=pd.DataFrame(columns=["name","id"]) df1["name"]=["a","b","c","a","d","e",&
df1=pd.DataFrame(columns=["name","id"])
df1["name"]=["a","b","c","a","d","e","b"]
df1["id"]=[1,2,3,"",4,5,""]
对于“a”和“b”的第二次迭代,我有一个空值
我想要的是:
df1["id"]=[1,2,3,1,4,5,2]
如何用第一次迭代的值填充该空值?您可以按名称分组,并按获取每个分组的第一个条目。然后将空字符串替换为同名组中的第一个条目,如下所示:
df1['id'] = df1['id'].replace('', np.nan).fillna(df1.groupby('name')['id'].transform('first')).astype(int)
df1['id'] = df1['id'].mask(df1['id'] == '', df1.groupby('name')['id'].transform('first'))
如果您的id
列已经包含一些NaN
值,并且您不想触及这些值,您还可以使用有条件地将空字符串值替换为groupby
值,如下所示:
df1['id'] = df1['id'].replace('', np.nan).fillna(df1.groupby('name')['id'].transform('first')).astype(int)
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
更多的选择通过
:
以及:
df1
:
name id
0 a 1
1 b 2
2 c 3
3 a 1
4 d 4
5 e 5
6 b 2