问题描述:
表格中存在一列数据:时间,格式例如:2021/12/11 8:43或者2021-12-11 8:43,要判断这个时间在上午还是在下午?
完整版代码:
import pandas as pd
import numpy as np
import datetime as dt
from collections import Counter
df = pd.read_csv(r'C:\Users\hanhan\PycharmProjects\pythonProject\data.csv',encoding = 'gb2312', usecols=['开始时间'])
time = []
for i in range(len(df)):
# print('i=', i)
starttime = df['开始时间'].iloc[i]
print('starttime', starttime)
# 转换成Y-m-d H:M 字符串形式
try:
starttime = str(dt.datetime.strptime(starttime, '%Y-%m-%d %H:%M'))[:-3]
except:
starttime = str(dt.datetime.strptime(starttime, '%Y/%m/%d %H:%M'))[:-3]
print('修改后starttime',starttime)
if int(starttime[11:13]) <= 12:
time.append('AM')
print('It is AM')
else:
time.append('PM')
print('It is PM')
print('time',time)
df['上午下午'] = time
求解步骤:
(1)导入库
import pandas as pd
import numpy as np
import datetime as dt
from collections import Counter
(2)读取数据
df = pd.read_csv(r'C:\Users\hanhan\PycharmProjects\pythonProject\data.csv',encoding = 'gb2312', usecols=['开始时间'])
并设置一个空列表,方便存储得到的答案集
time = []
(3)循环遍历时间列
因为时间格式存在两种形式,所以首先根据try...except...语句对时间列进行处理,这样所有的个位数月份或者是时间都会填充一个0,如下图所示。这样就会方便我们取多少位数。
然后,对要进行判断的starttime[11:13]也就是时钟部分进行判断,(这里我把12点到1点这段时间也算到了上午,可根据自己需求修改)。
if int(starttime[11:13]) <= 12:
time.append('AM')
print('It is AM')
else:
time.append('PM')
print('It is PM')
(4)存入文件
df['上午下午'] = time