python - Pandas 基于两个现有变量创建一个新变量

标签 python pandas

我认为以下代码效率极低。有没有更好的方法在 pandas 中进行这种类型的通用重新编码?

df['F'] = 0
df['F'][(df['B'] >=3) & (df['C'] >=4.35)] = 1
df['F'][(df['B'] >=3) & (df['C'] < 4.35)] = 2
df['F'][(df['B'] < 3) & (df['C'] >=4.35)] = 3
df['F'][(df['B'] < 3) & (df['C'] < 4.35)] = 4

最佳答案

使用numpy.select并将 bool 掩码缓存到变量以获得更好的性能:

m1 = df['B'] >= 3
m2 = df['C'] >= 4.35
m3 = df['C'] < 4.35
m4 = df['B'] < 3

df['F'] = np.select([m1 & m2, m1 & m3, m4 & m2, m4 & m3], [1,2,3,4], default=0)

关于python - Pandas 基于两个现有变量创建一个新变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50851137/

相关文章:

python - 最有效的 groupby 方式 => 聚合 pandas 中的大型数据框

python - 在 SeriesGroupBy 上执行 apply() 后如何将我的 Series 设为 "re-group"?

python - 将数据框列与字符串和数字进行比较

Python - Pandas - 如何使用第二个数据帧中的元素标记第一个数据帧中的元素?

python - 如何在pygame中的屏幕内区域添加边界

python - 来自另一个Spider的Scrapy导入方法

python - 如何通过 pandas 中的 groupby 输出来填充 na?

python - Pandas 分组和计数

Python:读取文件直到一行以二进制模式匹配字符串

python - Scikit 学习算法有错误的预测但 ROC 曲线是完美的?