如何正确阅读csv中的日期和省略前导零的Pandas?

2024-09-27 17:44:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试读取具有以下结构的csv/txt文件:

caseid   eventdate     constype  consid  employid  delta
4044     13/11/1996    9         2301    3044      0

我已经知道了:

  1. caseidconsidemployid是8位字符串(前导零不会出现在文本文件中)
  2. eventdate是dd/mm/yyyy日期
  3. costype是一个字符串
  4. delta是一个浮点数

现在,pandas的语法是什么来正确地读取csv/text以便所有列都被正确地输入?在

我用的是:

^{pr2}$

但这不能处理日期和前导零-任何想法/建议/帮助将非常感谢。在


Tags: 文件csv字符串txt结构dddeltamm
1条回答
网友
1楼 · 发布于 2024-09-27 17:44:29

下面的方法对我有效,您需要将dict作为参数传递给dtype,类型应该是可以理解的类型,我将传递str而不是{},同样,如果您传递paramparse_dates=[1]而不是在数据类型中指定它,那么pandas内置的日期解析器可以很好地解析日期字符串。在

要填充零,可以定义一个函数来填充零,并将其传递给传递列dict和函数名的参数converters,对于那些列,不必传递数据类型,因为它将由padZeros转换为str来推断:

def padZeros(x):
    return str(x).zfill(8)

df = pd.read_csv(path, sep='\s+', dtype = {'constype': str,
                     'delta': np.float16}, parse_dates=[1],
                     converters={'caseid':padZeros,
                                 'consid':padZeros,
                                 'employid':padZeros})

来自df.info()的输出:

^{pr2}$

相关问题 更多 >

    热门问题