Pandas新增一列并按条件赋值
谢邀,这个比较简单,你的想法是对的。
一行代码解决问题data.apply(lambda x: x.amount if x.list!="" else 0, axis=1)
■网友
pandas很灵活,实现的方式有很多。参考了 @杨航锋 和 @张翼轸 的回答,请允许我整理汇总一下,方便其他读者参考和对比import pandas as pdimport numpy as npif __name__ == \u0026#39;__main__\u0026#39;: data = https://www.zhihu.com/api/v4/questions/277824046/{/u0026#39;amount/u0026#39;: , /u0026#39;name/u0026#39;: } df = pd.DataFrame(data) # 杨航锋的方法 df = df.apply(lambda x: x.amount if x.name !="" else 0, axis=1) # 张翼轸的方法 df = np.where(df == \u0026#39;\u0026#39;, 0, df) df = df.where(df != \u0026#39;\u0026#39;, 0) df = df df.loc == \u0026#39;\u0026#39;, \u0026#39;x4\u0026#39;] = 0 def multiple_columns(row): out = {} out = row * 2 out = not row return pd.Series(out) df] = df.apply(multiple_columns, axis=1) print(df)输出如下:
【Pandas新增一列并按条件赋值】 这几种方法的效果都一样。最常用的也最灵活的还是df.apply方法。
apply很灵活。可以对行操作,也可以对列操。在对每行操作时,除了输出一个新的列,还可以一次输出多列。如上的代码里的生成了2列:double_amount和empty_name。
附pandas详细方法讲解
selection by labelwhere 方法 apply
■网友
这类一个条件判断,两种赋值来源的情况,即使在pandas里面,最好的法子也是用numpy里面的where函数,一句话完成,最为简洁。下面的第四行就是完成这个步骤的。import pandas as pdimport numpy as npdf=pd.DataFrame({\u0026#39;amount\u0026#39;:,\u0026#39;list\u0026#39;:})df=np.where(df==\u0026#39;\u0026#39;,0,df)
■网友
df.loc\u0026gt;0,\u0026#39;C\u0026#39;]=\u0026#39;ff\u0026#39;
用loc也可以实现
推荐阅读
- 江苏■1月4日江苏新增境外输入新冠肺炎确诊病例1例
- 沈阳新增3个中风险地区中风险地区升至16个
- 黑龙江黑河市爱辉区新增一处中风险地区
- 疫情■1月2日江苏无新增新冠肺炎确诊病例
- 江苏■12月28日江苏无新增新冠肺炎确诊病例
- 沈阳新增3例确诊病例、1例无症状感染者均与韩国返沈确诊病例关联
- 江苏■12月18日江苏无新增新冠肺炎确诊病例
- 杭州今年新增停车泊位7万余个激励社会资本投资供给
- 黑龙江省新增2例无症状感染者
- 病例■连云港通报8日新增1例境外输入新冠肺炎确诊病例详情
