在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 中一个非常有用的工具

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐