bet*_*eta 4 python mask dataframe pandas
基于此解决方案,我在Pandas数据帧上创建了几个遮罩,以创建一个新列,该列应由不同的列填充(基于条件)。
(简化的)代码如下所示:
mask0 = (df['condition'] == 1)
mask1 = (df['condition'] == 0)
df.loc[mask0, 'newColumn'] = df['otherColumn1']
df.loc[mask1, 'newColumn'] = df['otherColumn2']
Run Code Online (Sandbox Code Playgroud)
但是,在执行第三行时,出现以下错误:
ValueError:无法从重复的轴重新索引
如果我只是这样做,它就可以工作:
df.loc[mask0, 'newColumn'] = 1
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
您必须在两面都进行过滤:
mask0 = (df['condition'] == 1)
mask1 = (df['condition'] == 0)
df.loc[mask0, 'newColumn'] = df.loc[mask0, 'otherColumn1']
df.loc[mask1, 'newColumn'] = df.loc[mask1, 'otherColumn2']
Run Code Online (Sandbox Code Playgroud)
但是这里最好numpy.select避免重复代码:
df['newColumn'] = np.select([mask0, mask1],
[df['otherColumn1'], df['otherColumn2']],
default=np.nan)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
58 次 |
| 最近记录: |