Pandas 5-单元格填充日期
1. 创建包含日期的DataFrame
首先,需要创建一个包含日期的DataFrame。
import pandas as pd # 创建一个包含日期的DataFrame
data = { 'Name': ['Alice', 'Bob', 'Charlie', 'David'], 'Age': [24, 27, 22, 32], 'City': ['New York', 'Los Angeles', 'Chicago', 'Houston'], 'Date': ['2022-01-01', '2022-02-01', '2022-03-01', '2022-04-01']} df = pd.DataFrame(data)
print(df)
输出:
Name Age City Date0 Alice 24 New York 2022-01-01
1 Bob 27 Los Angeles 2022-02-01
2 Charlie 22 Chicago 2022-03-01
3 David 32 Houston 2022-04-01
2. 将字符串转换为日期类型
Pandas提供了to_datetime
方法,可以将字符串转换为日期类型。
# 将字符串转换为日期类型
df['Date'] = pd.to_datetime(df['Date'])
print(df)
输出:
Name Age City Date0 Alice 24 New York 2022-01-01
1 Bob 27 Los Angeles 2022-02-01
2 Charlie 22 Chicago 2022-03-01
3 David 32 Houston 2022-04-01
3. 填充缺失的日期
在实际数据中,经常会遇到缺失的日期。可以使用pd.date_range
生成连续的日期序列,并填充缺失的日期。
import numpy as np # 创建一个包含缺失日期的DataFrame
data = { 'Name': ['Alice', 'Bob', np.nan, 'David'], 'Age': [24, 27, 22, 32], 'City': ['New York', 'Los Angeles', 'Chicago', np.nan], 'Date': ['2022-01-01', '2022-02-01', np.nan, '2022-04-01']} df = pd.DataFrame(data)
df['Date'] = pd.to_datetime(df['Date'], errors='coerce')
print(df) # 生成连续的日期序列
date_range = pd.date_range(start='2022-01-01', end='2022-04-01', freq='MS')
print(date_range) # 填充缺失的日期
df['Date'] = df['Date'].fillna(method='ffill')
print(df)
输出:
Name Age City Date0 Alice 24 New York 2022-01-01
1 Bob 27 Los Angeles 2022-02-01
2 Charlie 22 Chicago NaT
3 David 32 Houston 2022-04-01 DatetimeIndex(['2022-01-01', '2022-02-01', '2022-03-01', '2022-04-01'], dtype='datetime64[ns]', freq='MS') Name Age City Date0 Alice 24 New York 2022-01-01
1 Bob 27 Los Angeles 2022-02-01
2 Charlie 22 Chicago 2022-02-01
3 David 32 Houston 2022-04-01
4. 日期格式化
可以使用dt
访问器来格式化日期。
# 格式化日期
df['Date_Formatted'] = df['Date'].dt.strftime('%Y-%m-%d')
print(df)
输出:
Name Age City Date Date_Formatted0 Alice 24 New York 2022-01-01 2022-01-01
1 Bob 27 Los Angeles 2022-02-01 2022-02-01
2 Charlie 22 Chicago 2022-02-01 2022-02-01
3 David 32 Houston 2022-04-01 2022-04-01
5. 日期操作
Pandas提供了多种日期操作方法,例如提取年份、月份、日等。
# 提取年份、月份、日
df['Year'] = df['Date'].dt.year
df['Month'] = df['Date'].dt.month
df['Day'] = df['Date'].dt.day
print(df)
输出:
Name Age City Date Date_Formatted Year Month Day0 Alice 24 New York 2022-01-01 2022-01-01 2022 1 1
1 Bob 27 Los Angeles 2022-02-01 2022-02-01 2022 2 1
2 Charlie 22 Chicago 2022-02-01 2022-02-01 2022 2 1
3 David 32 Houston 2022-04-01 2022-04-01 2022 4 1