【发布时间】:2018-11-26 17:41:48
【问题描述】:
我是 pandas 的新手,我正在使用以下代码根据其他现有列的条件创建新列:
df.loc[(df.item1_existing=='NO') & (df.item1_sold=='YES'),'unit_item1']=1
df.loc[(df.item2_existing=='NO') & (df.item2_sold=='YES'),'unit_item2']=1
df.loc[(df.item3_existing=='NO') & (df.item3_sold=='YES'),'unit_item3']=1
基本上,这意味着如果项目不存在(“否”)并且该项目已售出(“是”)然后给我一个 1。这可以创建 3 个新列,但我认为有一个更好的方法。如您所见,列名中有一个重复的字符串:“_existing”和“_sold”。我正在尝试创建一个 for 循环,它将查找以该特定单词结尾的列的名称并连接开头,如下所示:
unit_cols = ['item1','item2','item3']
for i in unit_cols:
df.loc[('df.'+i+'_existing'=='NO') & ('df'+i+'_sold'=='YES'),'unit_'+i]=1
当然,它不起作用。正如我所说,我能够使其与最初的示例一起工作,但我希望使用更少的代码行而不是重复相同的代码,因为我需要以这种方式创建多个列,而不仅仅是三个。有没有办法让这更容易? for 循环是最好的选择吗?谢谢你。
【问题讨论】:
标签: python pandas dataframe for-loop series