我目前正在尝试填充数据帧中的空白,如下所示:
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