Pandas新增一列并按条件赋值? | 您所在的位置:网站首页 › series添加一列 › Pandas新增一列并按条件赋值? |
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 实验室设备网 版权所有 |