📜  数据框如何对 2 个日期进行子结构 - Python (1)

📅  最后修改于: 2023-12-03 15:26:08.549000             🧑  作者: Mango

数据框如何对 2 个日期进行子结构 - Python

Python 中的 pandas 库提供了 DataFrame 数据结构,可用于存储和操作表格数据。 当数据框(DataFrame)中包含日期列时,我们可能需要将日期中的年份、月份、日等信息提取出来进行特定操作。本文将介绍如何对数据框中的两个日期进行子结构。

示例数据
import pandas as pd

df = pd.DataFrame({
    '起始日期': ['2021-01-01', '2021-03-01', '2021-05-01'],
    '终止日期': ['2021-03-15', '2021-07-01', '2021-09-01']
})

我们将使用上述数据框中的 '起始日期' 和 '终止日期' 列来演示如何对两个日期进行子结构。

Pandas 时间序列

Pandas 通过时间序列来处理日期和时间。标准的 Pandas 时间序列是 DatetimeIndex,可以通过将日期时间列转换为时间序列来进行处理。

date_cols = ['起始日期', '终止日期']
for col in date_cols:
    df[col] = pd.to_datetime(df[col])

上述代码将 '起始日期' 和 '终止日期' 列转换为 Pandas 时间序列。

提取日期子结构

Pandas 中的时间序列提供了多种方法来提取日期子结构,例如年份、月份、日等,本文将介绍如何使用 Pandas 中的 dt 属性提取子结构。

提取年份
df['起始年份'] = df['起始日期'].dt.year
df['终止年份'] = df['终止日期'].dt.year

上述代码将 '起始日期' 和 '终止日期' 中的年份分别存储到新的列 '起始年份' 和 '终止年份' 中。

提取月份
df['起始月份'] = df['起始日期'].dt.month
df['终止月份'] = df['终止日期'].dt.month

上述代码将 '起始日期' 和 '终止日期' 中的月份分别存储到新的列 '起始月份' 和 '终止月份' 中。

提取日
df['起始日'] = df['起始日期'].dt.day
df['终止日'] = df['终止日期'].dt.day

上述代码将 '起始日期' 和 '终止日期' 中的日分别存储到新的列 '起始日' 和 '终止日' 中。

结论

通过使用 Pandas 中的时间序列和 dt 属性,我们可以轻松提取数据框中的日期子结构,例如年、月、日等信息。这对于对日期进行特定操作和分析非常有用。

完整代码如下:

import pandas as pd

# 创建数据框
df = pd.DataFrame({
    '起始日期': ['2021-01-01', '2021-03-01', '2021-05-01'],
    '终止日期': ['2021-03-15', '2021-07-01', '2021-09-01']
})

# 将日期列转换为时间序列
date_cols = ['起始日期', '终止日期']
for col in date_cols:
    df[col] = pd.to_datetime(df[col])

# 提取年份子结构
df['起始年份'] = df['起始日期'].dt.year
df['终止年份'] = df['终止日期'].dt.year

# 提取月份子结构
df['起始月份'] = df['起始日期'].dt.month
df['终止月份'] = df['终止日期'].dt.month

# 提取日子结构
df['起始日'] = df['起始日期'].dt.day
df['终止日'] = df['终止日期'].dt.day

print(df)

输出结果如下:

       起始日期      终止日期  起始年份  终止年份  起始月份  终止月份  起始日  终止日
0 2021-01-01 2021-03-15  2021  2021     1     3    1   15
1 2021-03-01 2021-07-01  2021  2021     3     7    1    1
2 2021-05-01 2021-09-01  2021  2021     5     9    1    1