Pandas如何新增一列并按条件赋值?

文章介绍了如何在PandasDataFrame中使用apply方法结合lambda表达式,根据某列值(如list列)的条件来为新列(new_col)赋值。当list列为空时,新列值设为0;否则,新列值取amount列的对应值。这展示了Pandas处理数据的灵活性。

在Pandas中,我们经常需要根据某列的值来 conditional 地给其他列赋值。今天我们来看一个示例,对DataFrame新增一列,要求:

  • 如果list列为空,则新列值为0
  • 如果list列不为空,则新列值为amount列对应行的值


要实现这个条件赋值,我们可以使用Pandas的apply方法。apply方法可以对DataFrame中的每一行应用一个函数,并将函数的返回值 Assign 到新列中。


具体实现代码如下:
 

import pandas as pd

df = pd.DataFrame({
    'id': [1, 2, 3],
    'list': [[], [1, 2], [3]],
    'amount': [0, 10, 20] 
})

# 定义lambda函数,list为空则返回0,否则返回amount值
df['new_col'] = df.apply(lambda row: 0 if not row['list'] else row['amount'], axis=1)

print(df)

# 输出:
   id  list  amount  new_col
0   1   []       0        0  
1   2  [1, 2]     10       10 
2   3   [3]      20       20


在lambda表达式中,我们判断list列是否为空,如果为空则返回0,否则返回amount列对应的值。
这样apply方法就可以根据我们的条件,把返回的值赋给新列new_col。


通过这个示例,我们学习到Pandas中如何使用apply方法实现条件赋值的方法。apply结合lambda表达式可以灵活地对DataFrame中的数据进行各种运算和处理,是 Pandas 中一个非常有用的工具

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

devid008

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值