目录

  • 1. 涉及时间列合并
  • 2. 列错位修复
  • 3. parse_dates和date_parser
  • 参考资料:


1. 涉及时间列合并

data2 = pd.read_table(r'E:\data\Molas.txt', encoding='gbk', header=0, index_col=False, parse_dates=[['年月日', '时间戳']])
  • header=0 表示第 0 行作为列索引,header=None第0行不作为列名;
  • index_col:当为False时,重新生成行索引,也可以自己指定某列为行索引,当index_col=0时,将第一列变为index。
  • parse_dates:将某列解析为 date 类型,同时设定 infer_datetime_format = True 会加快解析速度;parse_dates={“datetime”: [0,1,2]}表示解析后重命名为 ‘datetime’
  • date_parser=lambda x: pandas.datetime.strptime(x, ‘%Y %m %d’)
  • keep_date_col 参数则是用了指定解析为日期格式的列是否保留,True或False。
  • skiprows=2,表示前面两行[0, 1]都不读入,等价于skiprows=[0, 1];
  • names=[‘’] 指定列名;
  • usecols=[‘Y’,‘M’,‘D’,‘PRCP’]:读取这 4 列 ‘Y’,‘M’,‘D’,‘PRCP’;
  • sep:用于分割每行字段的字符序列或正则表达式,
  • \s快捷方式可以匹配空白字符,比如空格,tab、换行等
  • 一般用 \t 或 \t+

时间列被放在了两个列中,需要合并,然后设置为索引,而 parse_dates=[[‘年月日’, ‘时间戳’]] 就是这个作用

paddleocr python执行output获取 python pd.read_table_时间戳


paddleocr python执行output获取 python pd.read_table_python_02


当日期和时间被放在两个列时,通过 parse_dates=[[‘Date’, ‘Time’]] 来合并,合并后新列名一般为 ‘Date_Time’

paddleocr python执行output获取 python pd.read_table_数据分析_03

2. 列错位修复

data = pd.read_table(r'F:\0613.txt', encoding='gbk', sep='\s+', skiprows=10, error_bad_lines=False)

读取 txt 格式数据后,发现列错误,年月日、时间戳 两列自动合并成为 1 列,并自动成为索引

而经度、纬度两列,直接被拆分成两列,如何修复?

paddleocr python执行output获取 python pd.read_table_日期格式_04


修改方式:仍然错误

data = pd.read_table(r'F:\0613.txt', encoding='gbk', sep='\t+', skiprows=10, error_bad_lines=False)

paddleocr python执行output获取 python pd.read_table_日期格式_05


正确答案:

data = pd.read_table(r'F:\0613.txt', encoding='gbk', sep='\t+', skiprows=10, error_bad_lines=False)

paddleocr python执行output获取 python pd.read_table_日期格式_06

3. parse_dates和date_parser

parse_dates(动词,主动解析格式)

  • parse_dates=True : 尝试解析index为日期格式;
  • parse_dates=[0,1,2,3,4] : 尝试解析0,1,2,3,4列为时间格式;
  • parse_dates=[[’考试日期’,‘考试时间’]] :传入多列名,尝试将其解析并且拼接起来,parse_dates[[0,1,2]]也有同样的效果;
  • parse_dates={’考试安排时间’:[‘考试日期’,‘考试时间’]},将会尝试解析日期和时间拼接起来,并将列名重置为‘考试安排时间’;
    注意:重置后列名不能和原列名重复

date_parser(名词,指定解析格式去解析某种不常见的格式)

  • date_parser需要配合parse_dates工作,具体需要传入函数
    例如时间为2021年2月24日,可以传入
  • parse_dates=[0]
  • date_parser=lambda x:pd.to_datetime(x,format=’%Y年%m月%d日’)