Pandas如何新增一列并按条件赋值?
通过这个示例,我们学习到Pandas中如何使用apply方法实现条件赋值的方法。
·
在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 中一个非常有用的工具
更多推荐



所有评论(0)