pandas日期转换问题,xxxxxxxx转换为xxxx/xx/xx或者xxxx-xx-xx格式

lrh1983 2020-05-03 02:03:51
合并了一些数据,然后写入到一个.csv文件,然后又把数据读出来,数据结果如下:日期是xxxxxxxx,时间格式就是阿拉伯数字,0~23,试了很久,各种方法,都没能把日期xxxxxxxx转化为xxxx/xx/xx或者xxxx-xx-xx,也没能把时间hour x转为0x:00:00格式。刚学习python没多久,总是报错。
1.使用data['date'].map(lambda x: x.strftime('%Y-%m-%d')) ,报错KeyError: 'date';
2.使用data['日期'] = data['date'].map(lambda x: x.strftime('%Y/%m/%d'))
data['时间'] = data['hour'].map(lambda x: x.strftime('%H:%m:%s')), 也是报错KeyError: 'date';
3.使用data['date'] = pd.to_datetime(data['date'], format='%Y-%m-%d')
data['hour'] = pd.to_datetime(data['hour'], format='%H-%m-%s'),也是报错KeyError: 'date';

搞不定了,求大神帮忙


hour type A B ... F G H I
date ...
20131205 0 PM2.5 NaN NaN ... NaN NaN NaN NaN
20131205 0 PM2.5_24h NaN NaN ... NaN NaN NaN NaN
20131205 0 PM10 NaN NaN ... NaN NaN NaN NaN
20131205 0 PM10_24h NaN NaN ... NaN NaN NaN NaN
20131205 0 AQI 126.0 145.0 ... 181.0 117.0 202.0 175.0
... ... ... ... ... ... ... ... ... ...
20200418 22 NO2_24h NaN NaN ... NaN NaN NaN NaN
20200418 22 O3 104.0 81.0 ... 60.0 73.0 67.0 85.0
...全文
1932 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_45903952 2020-05-03
  • 打赏
  • 举报
回复
引用 2 楼 lrh1983 的回复:
[quote=引用 1 楼 weixin_45903952 的回复:]


import pandas as pd
import numpy as np
import pandas.io.formats.excel  # 设置格式用
import xlsxwriter  # 设置格式用,pip install xlsxwriter

chengji = [[20131205, 95, 100, 99], [20131125, 98, 99, 100], [20150508, 95, 98, 88],
           [20160808, 98, 97, 87], [20200115, 90, 96, 85], [20200414, 94, 93, 91]]

data = pd.DataFrame(chengji, columns=['时间', '类别', '数学', '政治'])
print(data.index, data.columns)  # 竖序列,横标题
print("*"*50, "原始数据")
print(data.info())

print(data['时间'])

data['年份']=data['时间'].map(lambda x: str(x)[0:4])
data['月份']=data['时间'].map(lambda x: str(x)[4:6])
data['日期']=data['时间'].map(lambda x: str(x)[6:])
print(data)
这个日期的时间我下午已经分开了,还没来得及合并,现在主要是那个hour的0~23如何变为00:00:00格式。[/quote] 没看到里面有0-23的格式是什么样,你可以把数据用代码形式发上来看看,如果是00:00:00这种格式的,直接分割就是了
lrh1983 2020-05-03
  • 打赏
  • 举报
回复
是不是可以先把date和hour列合并,然后在切出来?
lrh1983 2020-05-03
  • 打赏
  • 举报
回复
引用 1 楼 weixin_45903952 的回复:


import pandas as pd
import numpy as np
import pandas.io.formats.excel  # 设置格式用
import xlsxwriter  # 设置格式用,pip install xlsxwriter

chengji = [[20131205, 95, 100, 99], [20131125, 98, 99, 100], [20150508, 95, 98, 88],
           [20160808, 98, 97, 87], [20200115, 90, 96, 85], [20200414, 94, 93, 91]]

data = pd.DataFrame(chengji, columns=['时间', '类别', '数学', '政治'])
print(data.index, data.columns)  # 竖序列,横标题
print("*"*50, "原始数据")
print(data.info())

print(data['时间'])

data['年份']=data['时间'].map(lambda x: str(x)[0:4])
data['月份']=data['时间'].map(lambda x: str(x)[4:6])
data['日期']=data['时间'].map(lambda x: str(x)[6:])
print(data)
这个日期的时间我下午已经分开了,还没来得及合并,现在主要是那个hour的0~23如何变为00:00:00格式。
weixin_45903952 2020-05-03
  • 打赏
  • 举报
回复


import pandas as pd
import numpy as np
import pandas.io.formats.excel  # 设置格式用
import xlsxwriter  # 设置格式用,pip install xlsxwriter

chengji = [[20131205, 95, 100, 99], [20131125, 98, 99, 100], [20150508, 95, 98, 88],
           [20160808, 98, 97, 87], [20200115, 90, 96, 85], [20200414, 94, 93, 91]]

data = pd.DataFrame(chengji, columns=['时间', '类别', '数学', '政治'])
print(data.index, data.columns)  # 竖序列,横标题
print("*"*50, "原始数据")
print(data.info())

print(data['时间'])

data['年份']=data['时间'].map(lambda x: str(x)[0:4])
data['月份']=data['时间'].map(lambda x: str(x)[4:6])
data['日期']=data['时间'].map(lambda x: str(x)[6:])
print(data)

37,744

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧