gpt4 book ai didi

python - 调整DataFrame中的异常格式,函数继续返回None

转载 作者:行者123 更新时间:2023-12-01 00:55:43 25 4
gpt4 key购买 nike

我有一个 pandas 数据框,正在运行此函数来调整时间的格式。时间以独特的方式格式化,并带有一些垃圾值。

我尝试了不同的返回语句,分配不同的值来了解它是如何工作的,并浏览了所有文档,但仍然无法弄清楚为什么这个函数一直返回 None。

df = pd.DataFrame({violation_time: ['+.98P','1037A', '0231P', '1206A', 
'0315P', '7824A']}

def time_converter(times):
"""Converts format of violation_time from HHMMP and HHMMA to datetime, assigns NaN"""
try:
for element in times:
if element[-1] == 'A':
hour = int(element[0:2])
minutes = int(element[2:4])
result = datetime.time(hour, minutes)
elif element[-1] =='P':
hour = int(element[0:2]) + 12
minutes = int(element[2:4])
result = datetime.time(hour, minutes)
else:
result = 'NaN'
return result
except ValueError:
'NaN'


df['time'] = df.violation_time.apply(time_converter)

我希望有一个新系列,其中消除了垃圾值,时间格式如下:[10:37,02:31, 00:26, 15:15]我可以通过附加到列表来获取 pandas 之外的这些值,这与 pandas 有什么不同?

最佳答案

以下结果是否正确:

  violation_time      time
0 +.98P None
1 1037A 10:37:00
2 0231P 14:31:00
3 1206A 12:06:00
4 0315P 15:15:00
5 7824A None

我将lambda应用为df.violation_time.apply(lambda x: time_converter(x))。而且,您不需要在 time_converter 函数中使用 for 循环

完整代码如下:

import datetime as datetime
import pandas as pd

df = pd.DataFrame({'violation_time': ['+.98P','1037A', '0231P', '1206A', '0315P', '7824A']})

def time_converter(times):
"""Converts format of violation_time from HHMMP and HHMMA to datetime, assigns NaN"""
try:
element = times
if element[-1] == 'A':
hour = int(element[0:2])
minutes = int(element[2:4])
result = datetime.time(hour, minutes)
elif element[-1] =='P':
hour = int(element[0:2]) + 12
minutes = int(element[2:4])
result = datetime.time(hour, minutes)
else:
result = 'NaN'
return result
except ValueError:
'NaN'


df['time'] = df.violation_time.apply(lambda x: time_converter(x))
print (df)

关于python - 调整DataFrame中的异常格式,函数继续返回None,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56264960/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com