Pandas新增一列并按条件赋值? 您所在的位置:网站首页 series添加一列 Pandas新增一列并按条件赋值?

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

2023-03-09 20:22| 来源: 网络整理| 查看: 265

pandas很灵活,实现的方式有很多。参考了 @杨航锋 和 @张翼轸 的回答,请允许我整理汇总一下,方便其他读者参考和对比

import pandas as pd import numpy as np if __name__ == '__main__': data = {'amount': [100, 200, 300, 400, 500], 'name': ['', '商品1', '商品3', '', '商品3']} df = pd.DataFrame(data) # 杨航锋的方法 df['x1'] = df.apply(lambda x: x.amount if x.name != "" else 0, axis=1) # 张翼轸的方法 df['x2'] = np.where(df['name'] == '', 0, df['amount']) df['x3'] = df['amount'].where(df['name'] != '', 0) df['x4'] = df['amount'] df.loc[df['name'] == '', 'x4'] = 0 def multiple_columns(row): out = {} out['double_amount'] = row['amount'] * 2 out['empty_name'] = not row['name'] return pd.Series(out) df[['double_amount', 'empty_name']] = df.apply(multiple_columns, axis=1) print(df)

输出如下:

这几种方法的效果都一样。最常用的也最灵活的还是df.apply方法。

apply很灵活。可以对行操作,也可以对列操。在对每行操作时,除了输出一个新的列,还可以一次输出多列。如上的代码里的生成了2列:double_amount和empty_name。

附pandas详细方法讲解

selection by labelwhere 方法 apply


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有