PythonPandas。日期对象被单独的列拆分。

2024-05-16 15:57:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Python(pandas)中的日期写为“1/31/2010”。要应用线性回归,我想有3个独立的变量:日数,月数,年数。你知道吗

如何将熊猫中带有日期的列拆分为3列? 另一个问题是将相同但分组的日子分成3组:1-10、11-20、21-31。你知道吗


Tags: pandas线性日子日数年数
2条回答
df['date'] = pd.to_datetime(df['date'])

#Create 3 additional columns
df['day'] = df['date'].dt.day
df['month'] = df['date'].dt.month
df['year'] = df['date'].dt.year

理想情况下,您不必再创建3个额外的列,只需将Series传递给函数即可。你知道吗

In [2]: pd.to_datetime('01/31/2010').day
Out[2]: 31

In [3]: pd.to_datetime('01/31/2010').month
Out[3]: 1

In [4]: pd.to_datetime('01/31/2010').year
Out[4]: 2010

这只回答您的第一个问题

一种解决方案是使用operator.attrgetter提取pd.Timestamp对象的属性。你知道吗

此方法的好处是可以轻松地扩展/更改所需的属性。此外,逻辑不是特定于对象类型的。你知道吗

from operator import attrgetter
import pandas as pd

df = pd.DataFrame({'date': ['1/21/2010', '5/5/2015', '4/30/2018']})

df['date'] = pd.to_datetime(df['date'], format='%m/%d/%Y')

attr_list = ['day', 'month', 'year']
attrs = attrgetter(*attr_list)
df[attr_list] = df['date'].apply(attrs).apply(pd.Series)

print(df)

        date  day  month  year
0 2010-01-21   21      1  2010
1 2015-05-05    5      5  2015
2 2018-04-30   30      4  2018

相关问题 更多 >