Ter*_*rry 2 python dataframe pandas
如果我有以下熊猫 df
A B C D
1 2 3 4
2 2 3 4
Run Code Online (Sandbox Code Playgroud)
我想根据以下情况添加一个新列为 1、2 或 3,
(A > B) && (B > C) = 1
(A < B) && (B < C) = 2
Else = 3
Run Code Online (Sandbox Code Playgroud)
什么是最好的方法来做到这一点?
您可以使用numpy.select来构建您的多个条件。最后一个参数代表默认值。
conditions = [(df.A > df.B) & (df.B > df.C),
(df.A < df.B) & (df.B < df.C)]
values = [1, 2]
df['E'] = np.select(conditions, values, 3)
Run Code Online (Sandbox Code Playgroud)
有几种选择:嵌套的numpy.where,连续的pd.DataFrame.loc,pd.DataFrame.apply。此解决方案的主要好处是可读性,同时保持矢量化。
| 归档时间: |
|
| 查看次数: |
1698 次 |
| 最近记录: |