Pandas Dataframe中的列转为日期格式
在本文中,我们将介绍如何使用Pandas将DataFrame中的列转换为日期格式。日期格式在数据分析和可视化中非常常见,因此了解如何将列转换为日期格式是处理数据的基本技能之一。
阅读更多:Pandas 教程
查看DataFrame的列
首先,让我们看一下一个简单的DataFrame,并查看它的列:
import pandas as pd
data = {'date': ['2019-01-01', '2019-01-02', '2019-01-03'],
'sales': [100, 200, 150]}
df = pd.DataFrame(data)
print(df)
输出:
date sales
0 2019-01-01 100
1 2019-01-02 200
2 2019-01-03 150
DataFrame中的‘date’列包含日期值,但它们是作为字符串来处理的。接下来,我们将演示如何将该列转换为日期格式。
转换为日期格式
使用Pandas的to_datetime()
函数,可以将字符串转换为日期格式。以下是将DataFrame中的‘date’列转为日期格式的示例代码:
df['date'] = pd.to_datetime(df['date'])
通过上面的代码,我们不仅将‘date’列转换为日期格式,还将新的日期列重新赋给了‘date’列。如果你想用不同的列名储存新的日期列,可以这样写:
df['new_date_column'] = pd.to_datetime(df['date'])
现在我们再次查看DataFrame:
print(df)
输出:
date sales
0 2019-01-01 100
1 2019-01-02 200
2 2019-01-03 150
‘date’列现在是日期格式,而不是字符串格式了。
从不同列创建日期
有时,日期信息可能分布在DataFrame中的不同列中。在Pandas中,可以使用to_datetime()
函数和DatetimeIndex()
函数从多个列中创建日期。
以下是将DataFrame中的‘year’列和‘month’列创建日期列的示例代码:
data = {'year': [2019, 2019, 2019],
'month': [1, 2, 3],
'sales': [100, 200, 150]}
df = pd.DataFrame(data)
df['date'] = pd.to_datetime(dict(year=df['year'], month=df['month']))
df = df.drop(['year', 'month'], axis=1)
通过将to_datetime()
函数与一个字典作为参数,该函数会创建一个包含年份和月份的新列,并使用DatetimeIndex()
函数将这些值转换为日期格式。最后,我们删除原始的‘year’和‘month’列,只留下新的日期列。
print(df)
输出:
sales date
0 100 2019-01-01
1 200 2019-02-01
2 150 2019-03-01
将日期拆分为年份、月份和日期
在某些情况下,在DataFrame中将日期单独分析可能非常有用。例如,你想在某个时间范围内对其进行聚合。在Pandas中,可以使用dt
属性和相关的方法拆分日期。
以下是如何将’date’列拆分为年份、月份和日期的示例代码:
df['year'] = df['date'].dt.year
df['month'] = df['date'].dt.month
df['day'] = df['date'].dt.day
df = df.drop('date', axis=1)
通过使用dt
属性和相关方法,我们可以将‘date’列拆分为年份、月份和日期,并将其分别存储在‘year’、‘month’和‘day’列中。由于我们现在已经将日期信息拆分了,我们可以在最后删除原始的‘date’列。
print(df)
输出:
sales year month day
0 100 2019 1 1
1 200 2019 2 1
2 150 2019 3 1
这里,我们成功地将‘date’列拆分成了‘year’、‘month’和‘day’三列。
将时间索引设置为日期
当我们需要进行时间序列分析时,使用日期作为时间索引比使用数字或字符串索引更方便。在Pandas中,可以使用set_index()
函数将日期列设置为时间索引。
以下是如何将DataFrame中的‘date’列设置为时间索引的示例代码:
df = df.set_index('date')
这样,我们可以使用loc[]
函数根据日期选择行:
print(df.loc['2019-01-01'])
输出:
sales 100
year 2019
month 1
day 1
Name: 2019-01-01 00:00:00, dtype: int64
总结
在本文中,我们介绍了如何使用Pandas将DataFrame中的列转换为日期格式。我们展示了将单独的列转换为日期格式、从不同的列创建日期列、将日期拆分为年、月、日以及将日期列设置为时间索引。这些技巧可以帮助数据分析师更好地处理数据,进行更加准确的分析和预测。