Tips:只是做题时忽然想到的一种思路,性能不太ok但可以实现
统计df数据的时候经常遇到,数据格式看起来为datetime,实际上是string,如YYYY/MM/DD HH/MM/SS 这样的能够看懂日期但不属于datetime格式的数据,这个时候要提取年或年月日就会比较困难
而这些数据本身是具有固定格式的,其年份/月份等等信息在字符串中的位置相对而言比较固定
如取年份时,位置一定是字符串前四位
因此,有这样一种思路:
1.遍历该列的所有数据
2.对每一个字符串数据进行切割,或许字符串中需要的片段
3.将每条数据处理后的结果储存成数组,再放进dataframe中的新一行中
这样我们就能够得到新的一列,关于想要时间的数据
下面以获取YYYY/MM/DD HH/MM/SS中的YYYY/MM/DD为例
考虑到月日的长度变化,在遍历时进行判断,截取正确位置的数据
dateList = []
# 遍历日期
for i in range(len(df1)):
cur = df1.iloc[i]['Date'] # 获取原始的日期
# 判断日期位数
if(cur[8] == ' '): # 如2022/1/1
dateList.append(cur[:8])
elif (cur[9] == ' '): # 如2022/1/11
dateList.append(cur[:9])
else: # 如2022/11/11
dateList.append(cur[:10])
# 转化为series放入dataframe中
data = pd.Series(dateList)
df1["Day"] = pd.(data)