Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 查找重复项并填充列_Python_Pandas - Fatal编程技术网

Python 查找重复项并填充列

Python 查找重复项并填充列,python,pandas,Python,Pandas,我有一个由两列组成的数据框架:name和id 在“名称”列中,我有两个重复项,在“id”列中,我有一个空的重复项值 我想要的是用第一次迭代的值填充这个空值 例如: df1=pd.DataFrame(columns=["name","id"]) df1["name"]=["a","b","c","a","d","e",&

我有一个由两列组成的数据框架:name和id 在“名称”列中,我有两个重复项,在“id”列中,我有一个空的重复项值 我想要的是用第一次迭代的值填充这个空值

例如:

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