如何从 pandas 中每组的完整行中替换不完整的行

How to replace incomplete rows from complete rows per group in pandas

尝试清理数据集时,我怀疑我正在处理数据框中其他地方包含正确信息的不完整行。例如,

ride_id start_station_name start_lat start_lng
12398213 Clark & Vermont 85.56 40.34
12398129 NaN 85.56 40.34

这只是许多这样的情况之一(对于多个站点)。好奇你们如何使用 start_latstart_lng.

搜索数据框,将“NaN”替换为“Clark and Vermont”

Group by the latitude and longitude, then forward-fill and backward-fill站名。

使用稍大的数据框进行演示:

df = pd.DataFrame({'ride_id': range(100, 105), 'station_name': ['Clark & Vermont', np.nan, np.nan, 'Foo & Bar', np.nan], 'start_lat': [85.56]*2 + [15.59]*3, 'start_lng': [40.34]*2 + [20.30]*3})

#    ride_id     station_name  start_lat  start_lng
# 0      100  Clark & Vermont      85.56      40.34
# 1      101              NaN      85.56      40.34
# 2      102              NaN      15.59      20.30
# 3      103        Foo & Bar      15.59      20.30
# 4      104              NaN      15.59      20.30

输出:

df['station_name'] = df.groupby(['start_lat', 'start_lng'])['station_name'].ffill().bfill()

#    ride_id     station_name  start_lat  start_lng
# 0      100  Clark & Vermont      85.56      40.34
# 1      101  Clark & Vermont      85.56      40.34
# 2      102        Foo & Bar      15.59      20.30
# 3      103        Foo & Bar      15.59      20.30
# 4      104        Foo & Bar      15.59      20.30