根据行和列的值填充NaN值

  • 本文关键字:填充 NaN python pandas
  • 更新时间 :
  • 英文 :


我有以下伪数据帧:

City       Longitude     Latitude
new mexico  1.94          2.34
berlin       2.44         5.33
london       1.1           2.44
new mexico    nan          nan
tokyo         2.2          3.3
berlin        nan           nan
new york      2.5           1.44
dakota         2             5.4
jakarta        3.4           4.5
london         nan           nan

有些城市被列了不止一次,但重复的城市却缺少价值。我想使用相同城市的值在经度和纬度列中填充一些城市的nan值,我尝试过使用ffil和后向填充,但它不起作用,因为缺少的值不符合模式。

您可以按LongitudeLatitude列排序,使NaN位于底部,然后使用groupbyffill,最后按索引重新排序:

df.sort_values(['Longitude', 'Latitude']).groupby('City').ffill().sort_index()
City  Longitude  Latitude
0  new mexico       1.94      2.34
1      berlin       2.44      5.33
2      london       1.10      2.44
3  new mexico       1.94      2.34
4       tokyo       2.20      3.30
5      berlin       2.44      5.33
6    new york       2.50      1.44
7      dakota       2.00      5.40
8     jakarta       3.40      4.50
9      london       1.10      2.44

或者更好的是,只需先按City排序,然后按LongitudeLatitude排序,然后使用不带groupby:的ffill

df.sort_values(['City','Longitude', 'Latitude']).ffill().sort_index()
City  Longitude  Latitude
0  new mexico       1.94      2.34
1      berlin       2.44      5.33
2      london       1.10      2.44
3  new mexico       1.94      2.34
4       tokyo       2.20      3.30
5      berlin       2.44      5.33
6    new york       2.50      1.44
7      dakota       2.00      5.40
8     jakarta       3.40      4.50
9      london       1.10      2.44

最新更新