2024-05-16 15:57:32 发布
网友
我在Python(pandas)中的日期写为“1/31/2010”。要应用线性回归,我想有3个独立的变量:日数,月数,年数。你知道吗
如何将熊猫中带有日期的列拆分为3列? 另一个问题是将相同但分组的日子分成3组:1-10、11-20、21-31。你知道吗
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传递给函数即可。你知道吗
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对象的属性。你知道吗
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
理想情况下,您不必再创建3个额外的列,只需将
Series
传递给函数即可。你知道吗这只回答您的第一个问题
一种解决方案是使用
operator.attrgetter
提取pd.Timestamp
对象的属性。你知道吗此方法的好处是可以轻松地扩展/更改所需的属性。此外,逻辑不是特定于对象类型的。你知道吗
相关问题 更多 >
编程相关推荐