我一直在尝试使用 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/