我知道以前有人问过这个问题,但每个案子都不一样。。。我的请求是:
df = pd.read_csv(‘file.csv’)
# convert the string into a datetime object
time = pd.to_datetime(df.dttm_utc)
Month=time.dt.month
Day=time.dt.day
Hour=time.dt.Hour
InDayLightSavings=True
if (Month<3): InDayLightSavings=False
if (Month==3) and (Day<11) and (Hour<2): InDayLightSavings=False
if (Month>11): InDayLightSavings=False
if (Month==11) and (Day>4)and (Hour>=2): InDayLightSavings=False
if (InDayLightSavings):
time=time-datetime.timedelta(hours=1)
它返回,正如您所猜到的,序列的真值是不明确的。使用a.empty、a.bool()、a.item()、a.any()或a.all()。我把它和时间戳一起使用,之前把它改成ISO8601,这个方法有效,但显然它不适用于series。我尝试添加.any(),但它不起作用。我也会按照其他帖子中的建议更改和。 我的标准杆文件.csv看起来是这样,一直持续到2012年底:
期望输出: Include是15分钟间隔内的数据示例3/13/2016 1:00 51
3/13/2016 1:15 48
3/13/2016 1:30 50.4
3/13/2016 1:45 51
3/13/2016 3:00 47.4
3/13/2016 3:15 49.8
3/13/2016 3:30 51
3/13/2016 3:45 51
3/13/2016 4:00 48.6
任何帮助都是谢谢。谢谢你!在
您看到的异常是由于您试图根据一组单个条件来计算包含多个不同条目的序列。 简单地说,让我们来看看你是做什么的:
错误分析(为什么不这样做):
首先,您获取了pandas dataframe列,然后将其转换为datetime,当然,datetime还返回一个列(series)。
你的错误:然后你试着评估一系列的具体情况:
^{pr2}$但是,你不能把一个条件和一个序列相比较,至少不是这样。Python不知道您指的是系列中的哪个条目,因为其中的某些值可能与其他条目不同。这意味着,对于系列中的某些项,条件可能满足,而对于其他项则不满足。因此
ValueError: The truth value of a series is ambiguous
。在你想做什么:
逐项评估,最好是以矢量化的方式。我的建议:始终保持在熊猫数据框中:
进一步阅读here、here、here和{a4}。在
用&;代替and怎么样?在
or和python语句需要真值。 我们这样做是因为在pandas中这些被认为是不明确的,所以我们应该使用位运算符“|”(or)或“&;”(and)运算。在
我不得不这么说,但我不能这么说
相关问题 更多 >
编程相关推荐