<p>使用<code>to_datetime</code>将字符串转换为<code>datetime</code>,然后减去日期时间1970-1-1并调用<code>dt.total_seconds()</code>:</p>
<pre><code>In [2]:
import pandas as pd
import datetime as dt
df = pd.DataFrame({'date':['2011-04-24 01:30:00.000']})
df
Out[2]:
date
0 2011-04-24 01:30:00.000
In [3]:
df['date'] = pd.to_datetime(df['date'])
df
Out[3]:
date
0 2011-04-24 01:30:00
In [6]:
(df['date'] - dt.datetime(1970,1,1)).dt.total_seconds()
Out[6]:
0 1303608600
Name: date, dtype: float64
</code></pre>
<p>您可以看到,将此值转换回的时间相同:</p>
<pre><code>In [8]:
pd.to_datetime(1303608600, unit='s')
Out[8]:
Timestamp('2011-04-24 01:30:00')
</code></pre>
<p>因此,您可以添加新列或覆盖:</p>
<pre><code>In [9]:
df['epoch'] = (df['date'] - dt.datetime(1970,1,1)).dt.total_seconds()
df
Out[9]:
date epoch
0 2011-04-24 01:30:00 1303608600
</code></pre>
<p><strong>编辑</strong></p>
<p>@Jeff建议的更好的方法:</p>
<pre><code>In [3]:
df['date'].astype('int64')//1e9
Out[3]:
0 1303608600
Name: date, dtype: float64
In [4]:
%timeit (df['date'] - dt.datetime(1970,1,1)).dt.total_seconds()
%timeit df['date'].astype('int64')//1e9
100 loops, best of 3: 1.72 ms per loop
1000 loops, best of 3: 275 µs per loop
</code></pre>
<p>您还可以看到,它的速度要快得多</p>