作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
基于 this solution ,我在 Pandas 数据框上创建了几个掩码以创建一个新列,该列应该从不同的列中填充(基于条件)。
(简化的)代码如下所示:
mask0 = (df['condition'] == 1)
mask1 = (df['condition'] == 0)
df.loc[mask0, 'newColumn'] = df['otherColumn1']
df.loc[mask1, 'newColumn'] = df['otherColumn2']
但是在执行第三行时出现以下错误:
ValueError: cannot reindex from a duplicate axis
如果我只是这样做,它就有效:
df.loc[mask0, 'newColumn'] = 1
我做错了什么?
最佳答案
你必须在两边过滤:
mask0 = (df['condition'] == 1)
mask1 = (df['condition'] == 0)
df.loc[mask0, 'newColumn'] = df.loc[mask0, 'otherColumn1']
df.loc[mask1, 'newColumn'] = df.loc[mask1, 'otherColumn2']
但这里最好使用numpy.select
为避免重复代码:
df['newColumn'] = np.select([mask0, mask1],
[df['otherColumn1'], df['otherColumn2']],
default=np.nan)
关于python - Pandas 数据框掩码将值写入新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57536071/
我是一名优秀的程序员,十分优秀!