Pandas-fill()来填充缺失的数据



我目前正在尝试填充数据帧中的空白,如下所示:

AL|ATFC|Year Latitude Longitude
0      AL011851      NaN       NaN
1           NaN    28.0N     94.8W
2           NaN    28.0N     95.4W
3           NaN    28.0N     96.0W
4           NaN    28.1N     96.5W
5           NaN    28.2N     96.8W
6           NaN    28.2N     97.0W
7           NaN    28.3N     97.6W
8           NaN    28.4N     98.3W
9           NaN    28.6N     98.9W
10          NaN    29.0N     99.4W
11          NaN    29.5N     99.8W
12          NaN    30.0N    100.0W
13          NaN    30.5N    100.1W
14          NaN    31.0N    100.2W
15     AL021851      NaN       NaN
16          NaN    22.2N     97.6W
17     AL031851      NaN       NaN
18          NaN    12.0N     60.0W

我一直在尝试下面的代码行,目的是用pandas-fill((函数填充AL|ATFC|Year列,其中有NaN值。

df.where(df['AL|ATFC|Year'] == float('NaN'), df['AL|ATFC|Year'].ffill(), axis=1, inplace=True)

要获得以下数据帧:

AL|ATFC|Year Latitude Longitude
0      AL011851      NaN       NaN
1      AL011851    28.0N     94.8W
2      AL011851    28.0N     95.4W
3      AL011851    28.0N     96.0W
4      AL011851    28.1N     96.5W
5      AL011851    28.2N     96.8W
6      AL011851    28.2N     97.0W
7      AL011851    28.3N     97.6W
8      AL011851    28.4N     98.3W
9      AL011851    28.6N     98.9W
10     AL011851    29.0N     99.4W
11     AL011851    29.5N     99.8W
12     AL011851    30.0N    100.0W
13     AL011851    30.5N    100.1W
14     AL011851    31.0N    100.2W
15     AL021851      NaN       NaN
16     AL021851    22.2N     97.6W
17     AL031851      NaN       NaN
18     AL031851    12.0N     60.0W

此后,我正在计划丢失Lon/Lat值的下降行。然而,我一直试图使用的代码无法填充AL|ATFC|Year列中缺失的值,我不明白为什么。。。任何帮助都将不胜感激!

感谢

ffill函数是向前填充值"其中它是NA/NaN值";,所以在CCD_ 6中不需要NaN条件。

df['AL|ATFC|Year'].ffill(inplace=True)

您可以用np.nan替换'AL|ATFC|Year'NaN,然后使用fillna函数。我只复制了前3行:

import pandas as pd
data = {'AL|ATFC|Year' : ['AL011851', 'NaN', 'NaN'],
'Latitude': ['NaN', '28.0N', '28.0N'],
'Longitude': ['NaN', '94.8W', '95.4W']}
df = pd.DataFrame(data)
df['AL|ATFC|Year'].replace('NaN', np.nan, inplace=True)
df['AL|ATFC|Year'].fillna(method='ffill', inplace=True)

输出:

AL|ATFC|Year Latitude Longitude
0     AL011851      NaN       NaN
1     AL011851    28.0N     94.8W
2     AL011851    28.0N     95.4W

最新更新