我正在嘗試讀取一個 CSV 檔案,該檔案的第一列日期值以這種格式指定:
"Dec 30, 2021","1.1","1.2","1.3","1"
雖然我可以使用dtype=子句定義其余列的型別,但我不知道如何處理日期。
我已經嘗試了顯而易見的方法np.datetime64但沒有成功。
有沒有辦法指定格式來直接使用read_csv方法決議這個日期?
uj5u.com熱心網友回復:
更新
如果我想進一步指定 a,b,c 和 d 的格式怎么辦?我使用了一個簡化的例子,在我的檔案中,數字的格式是這樣的“2,345.55”,這些數字被 read_csv 作為物件讀取,而不是像你的例子中的 float64 或 int64
converters = {
'Date': lambda x: datetime.strptime(x, "%b %d, %Y"),
'Number': lambda x: float(x.replace(',', ''))
}
df = pd.read_csv('data.csv', converters=converters)
輸出:
>>> df
Date Number
0 2021-12-30 2345.55
>>> df.dtypes
Date datetime64[ns]
Number float64
dtype: object
# data.csv
Date,Number
"Dec 30, 2021","2,345.55"
舊答案
如果您有特定格式,則可以將自定義函式傳遞給date_parser引數:
from datetime import datetime
custom_date_parser = lambda x: datetime.strptime(x, "%b %d, %Y")
df = pd.read_csv('data.csv', parse_dates=['Date'], date_parser=custom_date_parser)
print(df)
# Output
Date A B C D
0 2021-12-30 1.1 1.2 1.3 1
或者讓 Pandas 嘗試確定@richardec 建議的格式。
uj5u.com熱心網友回復:
只要指定的列清單,應該是轉換為日期在parse_dates=的pd.read_csv:
>>> df = pd.read_csv('file.csv', parse_dates=['date'])
>>> df
date a b c d
0 2021-12-30 1.1 1.2 1.3 1
>>> df.dtypes
date datetime64[ns]
a float64
b float64
c float64
d int64
uj5u.com熱心網友回復:
您可以使用 parse_dates :
df = pd.read_csv('data.csv', parse_dates=['date'])
但根據我的經驗,這是一個常見的錯誤來源,我認為最好指定日期格式并手動轉換日期列。例如,在您的情況下:
df = pd.read_csv('data.csv')
df['date'] = pd.to_datetime(df['date'], format = '%b %d, %Y')
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/402819.html
標籤:
