我有一个数据框“ reload”,我想创建两个变量,用于计算直到期中和总统选举为止的天数(实际选举日为0,前一天为1,依此类推) 。数据框中包含2008年至2016年选举之间的所有日子,但是其中有些日子不只一次。我无法弄清楚如何创建一个不会重复计算天数的计数器。
HttpContext.SignInAsync("Cookies", User)
这是数据示例,包括重复的日期输入
reload = pd.read_excel('master.xlsx', skiprows = 1)
具有“ 307.0”作为第一项的两行(从左数第4列和第5列)是我尝试创建的计数器变量。之所以会出现NaN条目,是因为一旦我意识到自己制作的计数器将无法使用,我便停止填写条目。
我想要的结果
0 1 2008-01-02 307.0 307.0 R D R 198 235 0 49
1 2 2008-01-03 306.0 306.0 R D R 198 235 0 49
2 3 2008-01-04 305.0 305.0 R D R 198 235 0 49
3 4 2008-01-05 304.0 304.0 R D R 198 235 0 49
4 5 2008-01-06 303.0 303.0 R D R 198 235 0 49
5 6 2008-01-07 302.0 302.0 R D R 198 235 0 49
....
6765 6766 2017-09-25 NaN NaN R R R 246 187 0 54
6766 6767 2017-09-25 NaN NaN R R R 246 187 0 54
6767 6768 2017-09-25 NaN NaN R R R 246 187 0 54
答案 0 :(得分:1)
就一个最小的例子而言,请考虑:
df = pd.DataFrame([['2008-01-02'],['2008-01-03'],['2008-01-04'],['2008-01-05'],['2008-01-05'],['2008-01-05'],['2008-01-06'],
['2008-01-06'],['2008-01-07'],['2008-01-08'],['2008-01-09'],['2008-01-10'],['2008-01-10'],['2008-01-11']],
columns=['Date'])
收益:
Date
0 2008-01-02
1 2008-01-03
2 2008-01-04
3 2008-01-05
4 2008-01-05
5 2008-01-05
6 2008-01-06
7 2008-01-06
8 2008-01-07
9 2008-01-08
10 2008-01-09
11 2008-01-10
12 2008-01-10
13 2008-01-11
您可以使用duplicated()
创建布尔掩码,并使用cumsum()
以相反的顺序[::-1]
执行倒计时:
df['Countdown'] = (~df['Date'].duplicated('last'))[::-1].cumsum()-1
礼物:
Date Countdown
0 2008-01-02 9
1 2008-01-03 8
2 2008-01-04 7
3 2008-01-05 6
4 2008-01-05 6
5 2008-01-05 6
6 2008-01-06 5
7 2008-01-06 5
8 2008-01-07 4
9 2008-01-08 3
10 2008-01-09 2
11 2008-01-10 1
12 2008-01-10 1
13 2008-01-11 0