【问题标题】:To prepare a dataframe with elements being repeated from a list in python准备一个数据框,其中包含从 python 列表中重复的元素
【发布时间】:2020-10-22 23:41:46
【问题描述】:

我有一个primary = ['A' , 'B' , 'C' , 'D'] 的列表 和一个 DataFrame 作为

df2 = pd.DataFrame(data=dateRange, columns = ['Date'])

其中包含 1 个日期列,从 2020 年 7 月 1 日到 2020 年 12 月 31 日。

我创建了另一列 'DayNum',其中将包含从 2020 年 7 月 1 日开始的日期编号,因此 'DayNum' 列将包含 2,依此类推。

现在使用列表我想创建另一列 'primary' 以便 DataFrame 如下所示:

简而言之,列表中的元素应该重复。您可以说这是一个花名册,每周显示花名册上的人的姓名,其中星期一是开始(第 0 天),星期日是结束(第 6 天)。

输出应该是这样的:

         Date  DayNum Primary
0   01-Jul-20       2       A
1   02-Jul-20       3       A
2   03-Jul-20       4       A
3   04-Jul-20       5       A
4   05-Jul-20       6       A
5   06-Jul-20       0       B
6   07-Jul-20       1       B
7   08-Jul-20       2       B
8   09-Jul-20       3       B
9   10-Jul-20       4       B
10  11-Jul-20       5       B
11  12-Jul-20       6       B
12  13-Jul-20       0       C
13  14-Jul-20       1       C
14  15-Jul-20       2       C
15  16-Jul-20       3       C
16  17-Jul-20       4       C
17  18-Jul-20       5       C
18  19-Jul-20       6       C
19  20-Jul-20       0       D
20  21-Jul-20       1       D
21  22-Jul-20       2       D
22  23-Jul-20       3       D
23  24-Jul-20       4       D
24  25-Jul-20       5       D
25  26-Jul-20       6       D
26  27-Jul-20       0       A
27  28-Jul-20       1       A
28  29-Jul-20       2       A
29  30-Jul-20       3       A
30  31-Jul-20       4       A

【问题讨论】:

    标签: pandas dataframe


    【解决方案1】:

    首先将0 的列与Series.eq 的列与Series.cumsum 的每周组的累积总和进行比较,然后将Series.mod 与列表中的值数和最后一个映射使用enumerate 创建的字典进行模数比较和listSeries.map

    primary = ['A','B','C','D']
    d = dict(enumerate(primary))
    df['Primary'] = df['DayNum'].eq(0).cumsum().mod(len(primary)).map(d)
    

    【讨论】:

      猜你喜欢
      • 2017-07-05
      • 1970-01-01
      • 2022-08-04
      • 2022-11-18
      • 2021-03-02
      • 2021-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多