Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.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 如果存在相同的重复条目,如何填写列的NaN_Python_Pandas_Duplicates_Fillna - Fatal编程技术网

Python 如果存在相同的重复条目,如何填写列的NaN

Python 如果存在相同的重复条目,如何填写列的NaN,python,pandas,duplicates,fillna,Python,Pandas,Duplicates,Fillna,我的数据框架中有两列,即LocationID和LocationName LocationID没有任何NAN条目。但是,某些行在LocationName列中具有NaN entires。每个位置名称都与唯一的LocationID关联 LocationID和LocationName列在dataframe中有许多重复的条目 如果数据帧中存在同一LocationID的数据点,且LocationName列中没有NaN,则如何填写与LocationID关联的LocationName列的NaN条目 示例如下所示

我的数据框架中有两列,即LocationID和LocationName

LocationID没有任何NAN条目。但是,某些行在LocationName列中具有NaN entires。每个位置名称都与唯一的LocationID关联

LocationID和LocationName列在dataframe中有许多重复的条目

如果数据帧中存在同一LocationID的数据点,且LocationName列中没有NaN,则如何填写与LocationID关联的LocationName列的NaN条目

示例如下所示:

LocationID  LocationName
1   Bengaluru
2   Delhi
3   Mysore
1   
1   
4   Nagpur
2   
2   Delhi
3   Mysore

以下内容应能实现您的目标:

df = pd.DataFrame([[1 , 'Bengaluru'], [2, 'Delhi'], [1, np.nan], [3, 'Mysore'], [2, 'Delhi']], columns=['LocationID', 'LocationName']) 
look_up_df = df[df.LocationName.notnull()].drop_duplicates(['LocationID']) 
look_up_df = look_up_df.set_index('LocationID')['LocationName']
df['LocationName'] = df['LocationName'].fillna(df['LocationID'].map(look_up_df)) 
输入:

    LocationID  LocationName
0   1   Bengaluru
1   2   Delhi
2   1   NaN
3   3   Mysore
4   2   Delhi

Output:

    LocationID  LocationName
0   1   Bengaluru
1   2   Delhi
2   1   Bengaluru
3   3   Mysore
4   2   Delhi
尝试:

可以获取一个序列,将每个索引映射到应用于填充缺失值的值

因此,我们需要收集一系列数据,将每个唯一的LocationID映射到LocationName:

df=df.set_index(“LocationID”)#以防它还不是索引
df=df.replace(“,np.nan)#如果缺少的值是空字符串而不是实际的nan
mapping=df[“LocationName”].dropna().drop_duplicates()
打印(映射)
产出:

           LocationName
LocationID             
1             Bengaluru
2                 Delhi
3                Mysore
4                Nagpur
LocationID             
1             Bengaluru
2                 Delhi
3                Mysore
1             Bengaluru
1             Bengaluru
4                Nagpur
2                 Delhi
2                 Delhi
3                Mysore
现在,我们使用
fillna()
将其应用于原始数据帧:

df[“LocationName”].fillna(映射,inplace=True)
打印(df)
产出:

           LocationName
LocationID             
1             Bengaluru
2                 Delhi
3                Mysore
4                Nagpur
LocationID             
1             Bengaluru
2                 Delhi
3                Mysore
1             Bengaluru
1             Bengaluru
4                Nagpur
2                 Delhi
2                 Delhi
3                Mysore
如果LocationID不是您的索引,可以选择放回原始索引