van*_*lay 0 python numpy dataframe pandas
如果我有一个长度为3的DataFrame,有3列
a b c
1 2 3
4 5 6
7 8 9
Run Code Online (Sandbox Code Playgroud)
有没有一种聪明的方法b用NaN 替换前两行的色谱柱?
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
Run Code Online (Sandbox Code Playgroud)
如果你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
Run Code Online (Sandbox Code Playgroud)
np.wheredf['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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
97 次 |
| 最近记录: |