gpt4 book ai didi

Python。将日期列提取到 pandas 中的 'day of week' 、月份...的几列中

转载 作者:行者123 更新时间:2023-12-01 01:37:06 26 4
gpt4 key购买 nike

我正在尝试将“日期”列转换为“星期几”等几列。我不知道为什么它总是在大约 2000 步后卡住。由于数据量相当大,我也很想知道是否有更快的方法。谢谢。

trainset.head()

Zone_ID Date Hour_slot Hire_count

0 1 2016-02-01 0 0

1 1 2016-02-01 1 0

2 1 2016-02-01 2 0

3 1 2016-02-01 3 0

4 1 2016-02-01 4 0

trainset.shape

(219600, 4)

这就是我所拥有的

TrainSet = trainset.copy()
TrainSet['w'] = 0
TrainSet['j'] = 0
TrainSet['U'] = 0
TrainSet['W'] = 0

for i in range(trainset.shape[0]):
TrainSet.loc[i, 'w'] = datetime.datetime.strptime(trainset.loc[i,'Date'], "%Y-%m-%d").strftime('%w')
TrainSet.loc[i, 'j'] = datetime.datetime.strptime(trainset.loc[i,'Date'], "%Y-%m-%d").strftime('%j')
TrainSet.loc[i, 'U'] = datetime.datetime.strptime(trainset.loc[i,'Date'], "%Y-%m-%d").strftime('%U')
TrainSet.loc[i, 'W'] = datetime.datetime.strptime(trainset.loc[i,'Date'], "%Y-%m-%d").strftime('%W')
print(i)

最佳答案

您应该将 Pandas/NumPy 方法与 datetime 系列一起使用,而不是手动循环。这是使用 operator.itemgetter 的功能解决方案:

from operator import attrgetter

# example dataframe
df = pd.DataFrame({'date': ['2017-05-01 15:00:20', '2018-11-30 10:01:11']})
df['date'] = pd.to_datetime(df['date'])

# list attributes
dt_attrs = ['year', 'hour', 'month', 'day', 'dayofweek']

# extract attributes
attributes = df['date'].apply(attrgetter(*dt_attrs))

# add attributes to dataframe
df[dt_attrs] = pd.DataFrame(attributes.values.tolist())

结果:

                 date  year  hour  month  day  dayofweek
0 2017-05-01 15:00:20 2017 15 5 1 0
1 2018-11-30 10:01:11 2018 10 11 30 4

关于Python。将日期列提取到 pandas 中的 'day of week' 、月份...的几列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52298019/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com