python - 将日期解析为从 csv 到 pandas 的字符串

标签 python pandas csv

我一直在尝试使用 panda 从我的 csv 中将日期解析为字符串。

我在这里想要实现的是提取一行(从 csv 中),其中包含两种类型的数据,字符串和整数。

从这里开始,我想使用 docx-mailmerge 生成 Microsoft Word 报告。

对于上下文,我在弄清楚时指的是这里的解决方案: datetime dtypes in pandas read_csv

谢谢。

这是我得到的错误:

ValueError: invalid literal for int() with base 10: 'Num'

这是我的代码:

import pandas as pd   

headers = ['AA', 'Num']
dtypes = {'AA': 'str', 'Num': 'int'}
pdate = ['AA']

df = pd.read_csv('test1.csv', 
header=None,
names = headers,
dtype = dtypes,
parse_dates = pdate, 
date_parser=None) 

top = df.head()
print(top)

这是我的 csv 文件:

AA,Num
1/1/2020,5
2/1/2020,10
3/1/2020,15
4/1/2020,20
5/1/2020,25
6/1/2020,30
7/1/2020,35
8/1/2020,40
9/1/2020,45
10/1/2020,50
11/1/2020,55

最佳答案

我认为问题是参数 header=None,如果 csv 中没有标题,则使用它。所以删除它。另外参数names = headers应该省略,如果需要解析所有列:

#here is set new columns names, so original headers are shift to first row of data
df = pd.read_csv('test1.csv',
header=None,
names = headers,
#dtype = dtypes,
#parse_dates = pdate, 
date_parser=None) 

top = df.head()
print(top)
         AA  Num
0        AA  Num
1  1/1/2020    5
2  2/1/2020   10
3  3/1/2020   15
4  4/1/2020   20

正确解析:

df = pd.read_csv('test1.csv',
#header=None,
#names = headers,
dtype = dtypes,
parse_dates = pdate, 
date_parser=None) 

top = df.head()
print(top)
          AA  Num
0 2020-01-01    5
1 2020-02-01   10
2 2020-03-01   15
3 2020-04-01   20
4 2020-05-01   25

如果只需要过滤某些列而不是 names = headers,请使用 usecols=headers 参数。

关于python - 将日期解析为从 csv 到 pandas 的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60770312/

相关文章:

python - 如何从 pandas 数据框中使用正则表达式删除答案中的点号 : '(i)' , '(ii)' 、 '(iii)' ?

python - Django 中的查询集联合

python - 将 dict 字段转换为 **list** 以在 **enumarate** 中使用

python - ggplot2:绘制安德鲁斯曲线

python - 计算数据帧之间的公共(public)列值 (Python)

ruby csv 合并单元格

Python 除了第一行之外没有在任何行上找到短语?

python - 如何将 Z3_ast 导出为二进制文件以及如何在其中搜索函数名称?

python - 推断字段分隔文件信息的库

Python 列表写入没有方括号的 CSV