【发布时间】:2020-01-09 17:10:09
【问题描述】:
我对 python 有点陌生,因此非常感谢任何帮助。在此先感谢(对于任何错误标签,我们深表歉意)。
我正在处理一个包含日期、时间、CO、CO2 和 CH4 列的 csv 文件。我想要实现的是创建一个循环,以便每次有零秒的时间(例如:“12:00:00 AM”、“3:05:00 PM”等)它都会获取该数据行并将其发送到新的文本或 csv 文件(这部分不包含在代码中)。我使用 pandas 导入了 csv,并使用 time.strptime 将字符串转换为可读的时间格式。
不幸的是,由于缺少一些数据,我无法为此循环收集每 60 个数据。我也尝试过使用 strptime 创建一个函数,但它也给了我一个类型错误,说它必须是一个字符串而不是熊猫核心系列。
导入 csv 文件:
data1 = pd.read_csv("prueba1.csv")
print(data1)
输出在哪里:
DATE TIME CO CO2_dry CH4_dry
0 3/4/2019 12:00:00 AM 0.352 420 1.99
1 3/4/2019 12:00:01 AM 0.352 420 1.99
2 3/4/2019 12:00:02 AM 0.352 420 1.99
3 3/4/2019 12:00:03 AM 0.366 420 1.99
4 3/4/2019 12:00:04 AM 0.366 420 1.99
5 3/4/2019 12:00:05 AM 0.366 421 1.99
6 3/4/2019 12:00:06 AM 0.369 421 1.99
7 3/4/2019 12:00:07 AM 0.369 421 1.99
8 3/4/2019 12:00:09 AM 0.354 421 1.99
9 3/4/2019 12:00:10 AM 0.354 421 1.99
我使用的代码是
for i in data1["TIME"]:
time.strptime(i,"%I:%M:%S %p")
if time.strptime(i,"%I:%M:%S %p") == time.strptime(i,"%I:%M:00 %p"):
print("Found a number!", i)
else:
print("Yikes")
错误信息是:
Found a number! 12:00:00 AM
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-18-8b936d17df46> in <module>()
2 time.strptime(i,"%I:%M:%S %p")
3 #print(i)
----> 4 if time.strptime(i,"%I:%M:%S %p") == time.strptime(i,"%I:%M:00 %p"):
5 print("Found a number!", i)
6 else:
C:\Users\Diego\Anaconda3\lib\_strptime.py in _strptime_time(data_string, format)
557 """Return a time struct based on the input string and the
558 format string."""
--> 559 tt = _strptime(data_string, format)[0]
560 return time.struct_time(tt[:time._STRUCT_TM_ITEMS])
561
C:\Users\Diego\Anaconda3\lib\_strptime.py in _strptime(data_string, format)
360 if not found:
361 raise ValueError("time data %r does not match format %r" %
--> 362 (data_string, format))
363 if len(data_string) != found.end():
364 raise ValueError("unconverted data remains: %s" %
ValueError: time data '12:00:01 AM' does not match format '%I:%M:00 %p'
它返回前面的输出。我希望它返回与 '%I:%M:00 %p' 格式匹配的所有时间数字,但只返回第一个数字。在遇到与指定格式不匹配的第一个数字后,它停止了,这对我来说似乎很奇怪。
【问题讨论】:
-
最好将
TIME转换为timedelta/timestamp,提取秒数并查找值为0的秒数。
标签: python pandas dataframe time jupyter-notebook