我想创建一个新的列的基础上,从散列的条件. 其中的逻辑是:

如果跨页=4,则New_Column=4

如果排列为>4且<=8,则New_Column=8

如果跨页为>8且=12,则new New_Column=12

如果跨页为>12,则new New_Column=16(16为截止值.)

我试过使用.where,但我一点运气都没有. 我希望最终的输出如下所示

Spread New_Column
1 4
2 4
5 8
6 8
9 12
11 12
13 16

推荐答案

您的条件的相等间隔允许:

df = pd.DataFrame({'Spread':[1,2,5,6,9,11,13,20]})
df['NewCol'] = df['Spread'].apply(lambda x: min( 4*(1+(x//4)), 16) )

Python相关问答推荐

在Pandas DataFrame操作中用链接替换'方法的更有效方法

修复mypy错误-赋值中的类型不兼容(表达式具有类型xxx,变量具有类型yyy)

使用密钥字典重新配置嵌套字典密钥名

driver. find_element无法通过class_name找到元素'""

Pandas GroupBy可以分成两个盒子吗?

为什么numpy. vectorize调用vectorized函数的次数比vector中的元素要多?

在Python中使用if else或使用regex将二进制数据如111转换为001""

将scipy. sparse矩阵直接保存为常规txt文件

合并与拼接并举

Python—压缩叶 map html作为邮箱附件并通过sendgrid发送

Odoo16:模板中使用的docs变量在哪里定义?

处理Gekko的非最优解

查看pandas字符列是否在字符串列中

Python日志(log)库如何有效地获取lineno和funcName?

来自Airflow Connection的额外参数

当我定义一个继承的类时,我可以避免使用`metaclass=`吗?

在一个数据帧中,我如何才能发现每个行号是否出现在一列列表中?

对列中的数字进行迭代,得到n次重复开始的第一个行号

`Convert_time_zone`函数用于根据为极点中的每一行指定的时区检索值

打印:添加具有不同填充 colored颜色 的矩形