为什么 pandas read_csv 没有使用我的日期解析器?
Why isn't pandas read_csv using my dateparser?
import numpy as np
import pandas as pd
def myDateParser(d):
#in format: 10/02/2018, out format: 181002
print("into myDateParser with ",d)
return(d[8:]+d[0:2]+d[3:5])
nd=myDateParser('10/02/2018')
print("nd=",nd)
rawDataFile="Transactions.CSV"
data = pd.read_csv(rawDataFile, header=1, usecols=[0,1,2,3,4,5,6,7],
parse_dates=True, date_parser=myDateParser)
print(data.head())
没有应用我的日期解析器就给出了结果
into myDateParser with 10/02/2018
nd= 181002
Date Action ... Fees & Comm Amount
0 10/02/2018 Buy ... .95 -1.24
1 10/02/2018 Sell to Open ... .60 4.40
2 10/02/2018 Sell ... .99 99.59
3 10/02/2018 Buy to Close ... .60 -5.60
4 10/02/2018 Buy ... .95 -9.95
[5 rows x 8 columns]
显然我不理解 https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html 页面上的说明
我想你在找 converters
pd.read_csv(r'File.csv', converters ={'Data':myDateParser})
Data
0 181002
1 181002
2 181002
3 181002
同时勾选 date_parser here
使用内置方法:
- 无需创建自定义函数,使用字符串切片。
df = pd.read_csv('data.csv', parse_dates=['Date'])
df.Date = df.Date.apply(lambda x: x.strftime('%y%m%d'))
Date Action Fees & Comm Amount
0 181002 Buy .95 -281.24
1 181002 Sell to Open .60 184.40
2 181002 Sell .99 2799.59
3 181002 Buy to Close .60 -735.60
4 181002 Buy .95 -319.95
import numpy as np
import pandas as pd
def myDateParser(d):
#in format: 10/02/2018, out format: 181002
print("into myDateParser with ",d)
return(d[8:]+d[0:2]+d[3:5])
nd=myDateParser('10/02/2018')
print("nd=",nd)
rawDataFile="Transactions.CSV"
data = pd.read_csv(rawDataFile, header=1, usecols=[0,1,2,3,4,5,6,7],
parse_dates=True, date_parser=myDateParser)
print(data.head())
没有应用我的日期解析器就给出了结果
into myDateParser with 10/02/2018
nd= 181002
Date Action ... Fees & Comm Amount
0 10/02/2018 Buy ... .95 -1.24
1 10/02/2018 Sell to Open ... .60 4.40
2 10/02/2018 Sell ... .99 99.59
3 10/02/2018 Buy to Close ... .60 -5.60
4 10/02/2018 Buy ... .95 -9.95
[5 rows x 8 columns]
显然我不理解 https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html 页面上的说明
我想你在找 converters
pd.read_csv(r'File.csv', converters ={'Data':myDateParser})
Data
0 181002
1 181002
2 181002
3 181002
同时勾选 date_parser here
使用内置方法:
- 无需创建自定义函数,使用字符串切片。
df = pd.read_csv('data.csv', parse_dates=['Date'])
df.Date = df.Date.apply(lambda x: x.strftime('%y%m%d'))
Date Action Fees & Comm Amount
0 181002 Buy .95 -281.24
1 181002 Sell to Open .60 184.40
2 181002 Sell .99 2799.59
3 181002 Buy to Close .60 -735.60
4 181002 Buy .95 -319.95