簡體   English   中英

將字符串列直接轉換為 Pandas DataFrame 中的日期格式(不是日期時間)

[英]Convert String Column directly to Date format (not Datetime) in Pandas DataFrame

我有以下 Pandas DataFrame:

df = pd.DataFrame({'a': ['2020-01-02', '2020-01-02']})

顯然,“a”列是字符串。 我想將其轉換為“日期”類型; 這就是我所做的:

df['a'] = df['a'].apply(pd.to_datetime).dt.date

它有效,但實際上我的 DataFrame 有 500,000 + 行。 似乎效率很低。 有什么方法可以直接更有效地將字符串列轉換為日期列?

pandas.DataFrame.apply本質上是一個原生的 python for loop。

pandas.to_datetime是向量化的 function,這意味着它旨在通過在 Z0D61F8370CAD1D412F70B84D143E12 中執行內循環來對序列/列表/數組/序列進行操作

如果我們從更大的 dataframe 開始:

import pandas
df = pandas.DataFrame({'a': ['2020-01-02', '2020-01-02'] * 5000})

然后做(在一個jupyter筆記本中)

%%timeit
df['a'].apply(pandas.to_datetime).dt.date

我們得到一個非常緩慢的結果:

1.03 s ± 48.9 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

但是,如果我們稍微重新排列以通過整個列:

%%timeit
pandas.to_datetime(df['a']).dt.date

我們得到一個更快的結果:

6.07 ms ± 232 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

使用df['a'] = pd.to_datetime(df['a'], format='%Y-%m-%d')

如果您知道它們都遵循相同的格式,請指定format

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM