我有以下虚拟数据框:
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和向后填充,但由于缺少的值未遵循模式,因此无法正常工作。
答案 0 :(得分:2)
您可以按Longitude
和Latitude
列进行排序,以使NaN
位于底部,然后使用groupby
和ffill
,最后重新按您的索引排序:
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
排序,然后按Longitude
和Latitude
排序,然后使用ffill
而不使用groupby:
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