Python 将日期作为字符串从csv解析为

Python 将日期作为字符串从csv解析为,python,pandas,csv,Python,Pandas,Csv,我一直在尝试使用panda从我的csv中将日期解析为字符串 我在这里试图实现的是提取一行(来自csv),其中包含两种类型的数据:字符串和整数 在这里,我想使用docx mailmerge生成Microsoft Word报表 就上下文而言,我是在这里指解决方案时得出以下结论的: 多谢各位 下面是我得到的错误: ValueError:以10为基数的int()的文本无效:“Num” 这是我的密码: import pandas as pd headers = ['AA', 'Num'] dty

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

我在这里试图实现的是提取一行(来自csv),其中包含两种类型的数据:字符串和整数

在这里,我想使用docx mailmerge生成Microsoft Word报表

就上下文而言,我是在这里指解决方案时得出以下结论的:

多谢各位

下面是我得到的错误:

ValueError:以10为基数的int()的文本无效:“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

如果需要只筛选某些列,请使用
usecols=headers
参数。

以下是工作代码:

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

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

top = df.head()
print(top)

谢谢你我认为不允许使用“use_cols”。@SyahmiShaarani-对不起,我的打字错误。它是
usecols
,用于多个列,只需解析很少的列。是的,它正在工作!但现在,当我打印精确的单元格(行和列)时,我得到了“2020-01-01 00:00:00”,但在数据框中,它只显示日期。如何删除时间戳?@SyahmiShaarani-在pandas中,如果没有时间不显示
00:00:00
,您可以检查它
print(df['AA'].tolist())
。如果不需要时间,请将列
AA
转换为日期,如
df['AA']=df['AA'].dt.date
另一个问题,如果我直接使用Excel怎么办?问题是日期不被视为“str”,那么我该如何处理我的代码?我收到此错误“dateparse=lambda x:pd.datetime.strTime(x,'%d/%m/%Y')类型错误:当我使用excel作为日期列时,strTime()参数1必须是str,而不是datetime.datetime”,熊猫不会对其进行分析。