在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 中一个非常有用的工具
文章介绍了如何在PandasDataFrame中使用apply方法结合lambda表达式,根据某列值(如list列)的条件来为新列(new_col)赋值。当list列为空时,新列值设为0;否则,新列值取amount列的对应值。这展示了Pandas处理数据的灵活性。
32





