我对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[&#39;day&#39;] <7 :
factor&#61;weeks[&#39;day&#39;]/7
else:
....
并得到一个错误&#xff1a;
ValueError: The truth value of a Series is ambiguous
我已经研究过,并且理解上面的代码试图测试整个列,因此不能有明确的真/假响应.我已经看到了关于所有/任何的一些评论,但这些也没有给我我正在寻找的答案.有没有办法测试列中的每个项目并根据值返回不同的输出&#xff1f;
解决方法:
如果需要使用to_datetime转换’周’列日期时间dtype,那么您可以使用dt.day比较day属性并将其用作np.where的条件&#xff1a;
In [47]:
df[&#39;week&#39;] &#61; pd.to_datetime(df[&#39;week&#39;])
df[&#39;factor&#39;] &#61; np.where(df[&#39;week&#39;].dt.day <7, &#39;y&#39;, &#39;x&#39;)
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
标签&#xff1a;python,dataframe,pandas