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

Python在数据框列上测试true / false条件并在新列中返回输出

我对Python编码很陌生,所以我试图掌握一些基础知识 – 任何输入都值得赞赏.

我有一个每周日期的列表,并且我试图在日期运行’if’语句,即如果日期数小于7,则创建一个具有因子x的列,或者创建一个因子y – 如同下表:

    week        day check       factor
0   2017-01-08  8   False       x
1   2017-01-15  15  False       x
2   2017-01-22  22  False       x
3   2017-01-29  29  False       x
4   2017-02-05  5   True        y

我试过下面的代码

if df['day'] <7 :
    factor=weeks['day']/7
else:
    ....

并得到一个错误

ValueError: The truth value of a Series is ambiguous

我已经研究过,并且理解上面的代码试图测试整个列,因此不能有明确的真/假响应.我已经看到了关于所有/任何的一些评论,但这些也没有给我我正在寻找的答案.有没有办法测试列中的每个项目并根据值返回不同的输出

解决方法:

如果需要使用to_datetime转换’周’列日期时间dtype,那么您可以使用dt.day比较day属性并将其用作np.where的条件:

In [47]:
df['week'] = pd.to_datetime(df['week'])
df['factor'] = np.where(df['week'].dt.day < 7, 'y', 'x')
df

Out[47]:
        week  day  check factor
0 2017-01-08    8  False      x
1 2017-01-15   15  False      x
2 2017-01-22   22  False      x
3 2017-01-29   29  False      x
4 2017-02-05    5   True      y

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

相关推荐