python - 如何根据开始时间的 7 天间隔在数据框中创建一个带有组标签的新列

标签 python pandas

我一直在网上寻找解决方案,但找不到。也许这太简单了,我不认识解决方案,但这是我的问题。我有一个数据框,其中的行代表不同日期发生的交易。该期间的开始日期是2022年1月1日。我想创建一个新列,其中包含事务所属时间间隔的标签。我想创建 7 天的间隔。因此,如果交易日期属于自开始日期以来的前 7 天期间,那么这些交易将具有标签“间隔 1”,如果它们属于下一个 7 天期间,则它们将具有标签“间隔 2” ”。这是一个数据框作为示例

# simulated data for stack overflow
data = {'dates':pd.date_range(start="2022-01-01",end="2022-01-21"),
       'values':rand(21)}
df_ex = pd.DataFrame(data)

enter image description here

我想要这样的东西

enter image description here

请注意,实际日期列没有唯一的日期。有些日子有多次交易。 我尝试过其他一些堆栈溢出答案,但他们没有回答我的具体问题。我尝试使用一些 groupby 函数和 .diff() 但无济于事

最佳答案

您可以转换to_datetime ,减去第一个日期,得到 days 的数量,并使用floordiv +1 构建字符串:

s = pd.to_datetime(df_ex['dates'])
df_ex['interval'] = ('interval '
                     +s.sub(s.iloc[0]).dt.days
                     .floordiv(7).add(1).astype(str)
                    )

注意。如果日期未排序,请使用 s.min() 作为引用(而不是 s.iloc[0])。此方法应该可以很好地处理丢失和重复的日期。

输出:

        dates    values    interval
0  2022-01-01  0.792507  interval 1
1  2022-01-02  0.485413  interval 1
2  2022-01-03  0.862531  interval 1
3  2022-01-04  0.216753  interval 1
4  2022-01-05  0.871699  interval 1
5  2022-01-06  0.723986  interval 1
6  2022-01-07  0.907056  interval 1
7  2022-01-08  0.618148  interval 2
8  2022-01-09  0.173755  interval 2
9  2022-01-10  0.218576  interval 2
10 2022-01-11  0.510574  interval 2
11 2022-01-12  0.832323  interval 2
12 2022-01-13  0.321287  interval 2
13 2022-01-14  0.721609  interval 2
14 2022-01-15  0.472324  interval 3
15 2022-01-16  0.492423  interval 3
16 2022-01-17  0.061945  interval 3
17 2022-01-18  0.161257  interval 3
18 2022-01-19  0.148596  interval 3
19 2022-01-20  0.047933  interval 3
20 2022-01-21  0.078941  interval 3

关于python - 如何根据开始时间的 7 天间隔在数据框中创建一个带有组标签的新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73867858/

相关文章:

python - 解析 HTML Python、BeautifulSoup

python - 如何使用 pandas 按组减去基于数据的列的行?

python - Tensorflow Saver.save无法写入Docker共享卷

python - 如何将一列中的每个单元格与 pandas 中的特定值进行比较?

python - 将python程序编译为可在C中导入的库

python - 用于运行特定单元格的 Jupyter 键盘快捷键

python - 使用 pandas read_csv 时出现 urllib.error.URLError

python - 在 pandas groupby 对象上重新运行 agg 会修改原始数据帧

python - 检查 Pandas 中的元组列是否包含列表中的某些值

python - 使用一系列数组的内容扩展数据帧