微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – pandas:有条件地返回列的值

我正在尝试创建一个名为“wage_rate”的新列,根据观察年份填写员工的适当工资率.

换句话说,我的列表看起来像这样:

eecode  year    w2011   w2012   w2013
1       2012    7       8       9
1       2013    7       8       9
2       2011    20      25      25
2       2012    20      25      25
2       2013    20      25      25

我希望在新列中返回,第一行为8,第二行为9,第二行为20,25,25.

解决方法:

一种方法是使用apply,通过根据年份构建每行的列名称,例如’w’str(x.year).

In [41]: df.apply(lambda x: x['w' + str(x.year)], axis=1)
Out[41]:
0     8
1     9
2    20
3    25
4    25
dtype: int64

细节:

In [42]: df
Out[42]:
   eecode  year  w2011  w2012  w2013
0       1  2012      7      8      9
1       1  2013      7      8      9
2       2  2011     20     25     25
3       2  2012     20     25     25
4       2  2013     20     25     25

In [43]: df['wage_rate'] = df.apply(lambda x: x['w' + str(x.year)], axis=1)

In [44]: df
Out[44]:
   eecode  year  w2011  w2012  w2013  wage_rate
0       1  2012      7      8      9          8
1       1  2013      7      8      9          9
2       2  2011     20     25     25         20
3       2  2012     20     25     25         25
4       2  2013     20     25     25         25

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐