Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.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 - Fatal编程技术网

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,我非常感谢。