从DataFrame中删除列的第一行N.

时间:2017-12-19 17:04:35

标签: python pandas numpy dataframe

如果我有一个长度为3的DataFrame,有3列

a b c
1 2 3
4 5 6
7 8 9

是否有一种智能方法可以用NaN替换列b的前两行?

2 个答案:

答案 0 :(得分:5)

pd.Series.mask

df['b'] = df.b.mask(df.index < 2)
df

   a    b  c
0  1  NaN  3
1  4  NaN  6
2  7  8.0  9

如果您的df.index不是单调递增的整数索引,那么您可以将df.index替换为np.arange(len(df)) -

df.b.mask(np.arange(len(df)) < 2)

0    NaN
1    NaN
2    8.0
Name: b, dtype: float64

np.where

df['b'] = np.where(df.index < 2, np.nan, df.b)
df

   a    b  c
0  1  NaN  3
1  4  NaN  6
2  7  8.0  9

np.ndarray.__getitem__

类似于Wen的iloc,对numpy数组进行索引 -

i = df.b.values
i[:2] = np.nan

df['b'] = i    
df

   a    b  c
0  1  NaN  3
1  4  NaN  6
2  7  8.0  9

答案 1 :(得分:3)

df.b.iloc[:2]=np.nan
df
Out[481]: 
   a    b  c
0  1  NaN  3
1  4  NaN  6
2  7  8.0  9
相关问题