Pandas - 基于一周的最后一个工作日的条件列创建

编码Dawg

我有一个这样的数据框,

date       day_of_wk    wk_num  wkend_hol_ind   freq_daily
1/1/2007    Monday        1         H   
1/2/2007    Tuesday       1         H   
1/3/2007    Wednesday     1                       D
1/4/2007    Thursday      1                       D
1/5/2007    Friday        1                       D
1/6/2007    Saturday      1         W   
1/7/2007    Sunday        1         W   
1/8/2007    Monday        2                       D
1/9/2007    Tuesday       2                       D
1/10/2007   Wednesday     2                       D
1/11/2007   Thursday      2                       D
1/12/2007   Friday        2         H     
1/13/2007   Saturday      2         W
1/14/2007   Sunday        2         W

我正在尝试在数据框中创建一个新列作为“freq_weekly”。

对于“wk_num”的每个值,此列的最后一个“D”值的值为“W”,其他列的值为空白。

例如,1/5/2017 的值为“W”,1/11/2017 的值为“W”。其他人将有空白。

请帮我解决这个问题。

耶斯列

想法是mask通过ne,shift为连续组创建助手cumsum,然后仅过滤D行并通过Series.duplicatedwith获取最后一个值keep='last',然后通过 排除行Series.reindex

m = df['freq_daily'].eq('D')
mask = m.ne(m.shift()).cumsum()[m].duplicated(keep='last').reindex(df.index, fill_value=True)

如果需要测试更多列的重复项:

mask = (df.assign(m=m.ne(m.shift()).cumsum())[m]
          .duplicated(['wk_num','freq_daily'],keep='last')
          .reindex(df.index, fill_value=True))

因此可以通过numpy.where以下方式创建新列

df['freq_weekly'] = np.where(mask, '', 'W')
print (df)
         date  day_of_wk  wk_num wkend_hol_ind freq_daily freq_weekly
0    1/1/2007     Monday       1             H        NaN            
1    1/2/2007    Tuesday       1             H        NaN            
2    1/3/2007  Wednesday       1           NaN          D            
3    1/4/2007   Thursday       1           NaN          D            
4    1/5/2007     Friday       1           NaN          D           W
5    1/6/2007   Saturday       1             W        NaN            
6    1/7/2007     Sunday       1             W        NaN            
7    1/8/2007     Monday       2           NaN          D            
8    1/9/2007    Tuesday       2           NaN          D            
9   1/10/2007  Wednesday       2           NaN          D            
10  1/11/2007   Thursday       2           NaN          D           W
11  1/12/2007     Friday       2             H        NaN            
12  1/13/2007   Saturday       2             W        NaN            
13  1/14/2007     Sunday       2             W        NaN            

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在 Python 中查找一周的最后一个工作日

来自分类Dev

如何在Python Pandas中获得上一年最后一个月的最后一个工作周?

来自分类Dev

如何基于另一个 DataFrame 中的列在 Pandas DataFrame 中创建新列?

来自分类Dev

从第三列为1的另一列中的最后一个值创建pandas df列

来自分类Dev

基于多个条件的Pandas DataFrame条件列仅在第一个条件下起作用?

来自分类Dev

根据多列中的值和相同条件在pandas中创建一个新列

来自分类Dev

Mysql中前一周的5个工作日

来自分类Dev

创建一个新的pandas列,该列基于id从一行中获取值

来自分类Dev

pandas 数据框创建一个新列,其值基于另一列上的 groupby sum

来自分类Dev

将工作日添加到基于其他列的pandas df日期列

来自分类Dev

根据不同条件在Pandas数据框中创建一个新列

来自分类Dev

Pandas Dataframe:创建一个新列,并基于两个不同的列在匹配的行中插入一个值

来自分类Dev

就最低的计算复杂度而言,如何创建一个新的pandas列,该列将基于另一列增加一定数量

来自分类Dev

Python Pandas:如何根据给定条件基于另一列创建列?

来自分类Dev

Pandas \ Python:如何计算一列中最后一个相同值的数量

来自分类Dev

获取一个月的最后一个工作日

来自分类Dev

确定一天是否是Python / Pandas中的工作日

来自分类Dev

Python Pandas 距离和工作日列之间的关系

来自分类Dev

基于唯一的多列索引的另一个DataFrame的新pandas DataFrame

来自分类Dev

Java一年中第一周的最少工作日

来自分类Dev

Java一年中第一周的最少工作日

来自分类Dev

如果在过去N天内满足条件,则创建一个新列python pandas

来自分类Dev

Pandas DataFrame按两列分组,并获得第一个和最后一个

来自分类Dev

使用Python Pandas减去列中的最后一个元素和第一个元素

来自分类Dev

Pandas DataFrame按两列分组,并获得第一个和最后一个

来自分类Dev

如何基于Pandas数据框中的另一个列值添加列?

来自分类Dev

如何使用 Pandas.assign 从 Pandas 数据框索引创建一个新列?

来自分类Dev

根据pandas中另一列的状态创建一个新列

来自分类Dev

Pandas 根据另一列的非空值创建一个新列

Related 相关文章

  1. 1

    在 Python 中查找一周的最后一个工作日

  2. 2

    如何在Python Pandas中获得上一年最后一个月的最后一个工作周?

  3. 3

    如何基于另一个 DataFrame 中的列在 Pandas DataFrame 中创建新列?

  4. 4

    从第三列为1的另一列中的最后一个值创建pandas df列

  5. 5

    基于多个条件的Pandas DataFrame条件列仅在第一个条件下起作用?

  6. 6

    根据多列中的值和相同条件在pandas中创建一个新列

  7. 7

    Mysql中前一周的5个工作日

  8. 8

    创建一个新的pandas列,该列基于id从一行中获取值

  9. 9

    pandas 数据框创建一个新列,其值基于另一列上的 groupby sum

  10. 10

    将工作日添加到基于其他列的pandas df日期列

  11. 11

    根据不同条件在Pandas数据框中创建一个新列

  12. 12

    Pandas Dataframe:创建一个新列,并基于两个不同的列在匹配的行中插入一个值

  13. 13

    就最低的计算复杂度而言,如何创建一个新的pandas列,该列将基于另一列增加一定数量

  14. 14

    Python Pandas:如何根据给定条件基于另一列创建列?

  15. 15

    Pandas \ Python:如何计算一列中最后一个相同值的数量

  16. 16

    获取一个月的最后一个工作日

  17. 17

    确定一天是否是Python / Pandas中的工作日

  18. 18

    Python Pandas 距离和工作日列之间的关系

  19. 19

    基于唯一的多列索引的另一个DataFrame的新pandas DataFrame

  20. 20

    Java一年中第一周的最少工作日

  21. 21

    Java一年中第一周的最少工作日

  22. 22

    如果在过去N天内满足条件,则创建一个新列python pandas

  23. 23

    Pandas DataFrame按两列分组,并获得第一个和最后一个

  24. 24

    使用Python Pandas减去列中的最后一个元素和第一个元素

  25. 25

    Pandas DataFrame按两列分组,并获得第一个和最后一个

  26. 26

    如何基于Pandas数据框中的另一个列值添加列?

  27. 27

    如何使用 Pandas.assign 从 Pandas 数据框索引创建一个新列?

  28. 28

    根据pandas中另一列的状态创建一个新列

  29. 29

    Pandas 根据另一列的非空值创建一个新列

热门标签

归档