gpt4 book ai didi

python - 如何根据另一列的时间将列添加到 Pandas 数据框

转载 作者:行者123 更新时间:2023-11-28 22:30:44 24 4
gpt4 key购买 nike

我正在尝试将一列添加到 pandas dataframe 中,插入 MorningEveningAfternoon ,基于我选择的时间段。

我正在尝试的代码如下:

df_agg['timeOfDay'] = df_agg.apply(lambda _: '', axis=1)
for i in range (len(df_agg)):
if df_agg['time_stamp'].iloc[i][0].hour < 12:
df_agg['timeOfDay'].iloc[i] = 'Morning'
elif df_agg['time_stamp'].iloc[i][0].hour < 17 & df_agg['time_stamp'].iloc[i][0].hour > 12:
df_agg['timeOfDay'].iloc[i] = 'Afternoon'
else:
df_agg['timeOfDay'].iloc[i] = 'Evening'

当我返回我的 df_agg 时,它返回一个空的 timeOfDay 列。有谁知道我在尝试根据一天中的时间将这些元素插入行中时做错了什么?

最佳答案

Pandas
使用 pd.cut 将其按 bin 拆分并给出标签。这种方法也使得创建更细粒度的时隙变得微不足道

df_agg.assign(
timeOfDay=pd.cut(
df_agg.time_stamp.dt.hour,
[-1, 12, 17, 24],
labels=['Morning', 'Afternoon', 'Evening']))

numpy
使用 searchsorted

hours = df_agg.time_stamp.dt.hour.values
times = np.array(['Morning', 'Afternoon', 'Evening'])

df_agg.assign(timeOfDay=times[np.array([12, 17]).searchsorted(hours)])

两者都产生

enter image description here


时间测试
小数据集

enter image description here

大数据集

start = pd.to_datetime('2015-02-24 10:00:00')
rng = pd.date_range(start, periods=10000, freq='1h')

df_agg = pd.DataFrame({'time_stamp': rng, 'a': range(len(rng))})

enter image description here


设置
借用@jezrael 的设置df_agg

start = pd.to_datetime('2015-02-24 10:00:00')
rng = pd.date_range(start, periods=12, freq='1h')

df_agg = pd.DataFrame({'time_stamp': rng, 'a': range(len(rng))})
print (df_agg)

关于python - 如何根据另一列的时间将列添加到 Pandas 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41993598/

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