Python 基于行和列的值填充NaN值
我有以下虚拟数据帧:Python 基于行和列的值填充NaN值,python,pandas,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
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和向后填充,但是,它不起作用,因为缺少的值不遵循模式。您可以按
经度
和纬度
列进行排序,使NaN
s位于底部,然后使用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
或者更好的做法是,只需先按城市
排序,然后按经度
和纬度
排序,然后使用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
您可以按
经度
和纬度
列排序,使NaN
s位于底部,然后使用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
或者更好的做法是,只需先按城市
排序,然后按经度
和纬度
排序,然后使用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
请编辑您的帖子以包含您尝试实现的代码。请编辑您的帖子以包含您尝试实现的代码。非常感谢sacul,我非常感谢。非常感谢sacul,我非常感谢。