用 NaN 替换最后 n 行

Replace n last rows with NaN

我有一个数据框df1:

df1 =

index     col1     col2
1         1        2
2         2        3
3         3        4
4         4        5
5         5        6
6         6        7

例如,我想做的是用 NaN 替换 col2 中的最后两行,因此生成的数据框将是:

index     col1     col2
1         1        2
2         2        3
3         3        4
4         4        5
5         5        NaN
6         6        NaN

使用 DataFrame.iloc, so need position by Index.get_loc 列的位置索引:

df.iloc[-2:, df.columns.get_loc('col2')] = np.nan

或使用带索引的 DataFrame.loc df.index:

df.loc[df.index[-2:], 'col2'] = np.nan

print (df)
   col1  col2
1     1   2.0
2     2   3.0
3     3   4.0
4     4   5.0
5     5   NaN
6     6   NaN

最后一个如果需要整数列:

df['col2'] = df['col2'].astype('Int64')
print (df)
   col1  col2
1     1     2
2     2     3
3     3     4
4     4     5
5     5  <NA>
6     6  <NA>

试一试:

df.col2[-2:] = np.NaN

看来post要集齐所有可能的方法

df["col2"].iloc[-2:,] = np.nan

4 种方法。方法 3 和 4 对我来说似乎是最好的:

1)

df.at[5,'col2']=math.nan
df.at[6,'col2']=math.nan
df.loc[5,'col2']=np.nan 
df.loc[6,'col2']=np.nan
  1. 来自上面的回答

    df.col2[-2:]=np.nan

  2. df['col2'][-2:]=np.nan