我有一个包含每日日期的 pandas DataFrame,并且在此 DataFrame 中缺少一些日期。我的目标是生成一个新的时间序列,其中仅包含该数据帧中每周的最后一天。例如,如果特定周只有周三和周四条目,则生成的时间序列应仅保留该周的周四数据点。
例如,我尝试了以下操作:
import pandas as pd
import numpy as np
# Create a sample time series with date index
#SUNDAY, MONDAY, TUESDAY, WED, THURSDAY
date_list = ['2023-10-01', '2023-10-02', '2023-10-03', '2023-10-04', '2023-10-05']
# Convert the date list to a pandas datetime index
date_rng = pd.to_datetime(date_list)
data = np.random.rand(len(date_rng))
time_series = pd.Series(data, index=date_rng)
# Resample the time series to weekly frequency and select the last observation for each week
weekly_last = time_series.resample('W').last()
weekly_last['Day of the Week'] = weekly_last.index.day_name()
# Print the result
print(weekly_last)
打印:['SUNDAY', 'SUNDAY'] 而它应该打印 ['SUNDAY', 'THURSDAY']
所以我真的不知道如何实现我想要的?非常感谢您的帮助
最佳答案
我选择通过计算天数差除以 7 来计算周数。我还选择了要减去的日期,以防您不想要周日至周六的周。我还更改了初始日期范围以更好地演示这一点。
# Create a sample time series with date index
#SUNDAY, MONDAY, TUESDAY, WED, THURSDAY
# date_list = ['2023-10-01', '2023-10-02', '2023-10-03', '2023-10-04', '2023-10-05']
date_list = np.arange(np.datetime64('2023-10-01'), np.datetime64('2023-10-31'), np.timedelta64(3, 'D'))
df = pd.DataFrame(date_list)
offset_day = df.loc[0, 0]
df['Day of Week'] = df[0].dt.day_name()
df['Week #'] = (df[0] - offset_day).dt.days // 7
print(df)
print(df.groupby('Week #').last())
关于python - 重新采样 ('W' )奇怪的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77391383/