擅长:python、mysql、java
<p>Pandas对时间序列有极好的支持,因此利用适当的工具是个好主意。将列转换为单个Datetime列后,可以对其执行时间算术:</p>
<pre><code># demo dataframe
df = pd.DataFrame({
'birthMonth': [5, 2],
'birthDay': [4, 24],
'birthYear': [1924, 1997],
'deathMonth': [3, None],
'deathDay': [1, None],
'deathYear': [2008, None]
})
# convert birth dates to datetimes
birth = pd.to_datetime(df[['birthMonth', 'birthDay', 'birthYear']]
.rename(columns={'birthMonth': 'month', 'birthDay': 'day', 'birthYear': 'year'}))
# convert death dates to datetimes
death = pd.to_datetime(df[['deathMonth', 'deathDay', 'deathYear']]
.rename(columns={'deathMonth':'month', 'deathDay': 'day', 'deathYear': 'year'}))
# calculate age in days, normalizing 'now' to midnight of today
age = (pd.Timestamp.now().normalize() - birth).where(death.isnull(), other=death-birth)
</code></pre>
<p><strong>编辑</strong>:请参阅@ALollz下面关于时间戳规范化的讨论。你知道吗</p>