我有一个巨大的数据框。下面是一个小例子:
Date Timing Day_number
17.03.2016 8 1
17.03.2016 8 2
17.03.2016 8 3
17.03.2016 8 4
17.03.2016 8 5
17.03.2016 8 6
17.03.2016 8 7
17.03.2016 8 8
30.08.2016 3 1
30.08.2016 3 2
30.08.2016 3 3
31.05.2016 3 1
31.05.2016 3 2
31.05.2016 3 3
...
我需要添加一个新列。我查看“计时”列中的值。例如,如果值是 8,那么我查看日期并在这种情况下在每一行中添加一天。结果是八行,日期从 17.03.2016 到 24.03.2016。“计时”列中的值可以不同。日期也不一样。对于这个例子,我应该有这样的东西:
Date Timing Day_number Distribution_of_days
17.03.2016 8 1 17.03.2016
17.03.2016 8 2 18.03.2016
17.03.2016 8 3 19.03.2016
17.03.2016 8 4 20.03.2016
17.03.2016 8 5 21.03.2016
17.03.2016 8 6 22.03.2016
17.03.2016 8 7 23.03.2016
17.03.2016 8 8 24.03.2016
30.08.2016 3 1 30.08.2016
30.08.2016 3 2 31.08.2016
30.08.2016 3 3 01.09.2016
31.05.2016 3 1 31.05.2016
31.05.2016 3 2 01.06.2016
31.05.2016 3 3 02.06.2016
...
同时我需要跳过周末!
Pandas 将“Date”列的值识别为非空对象。这是否意味着他没有将它们视为约会对象?
有人能帮我吗?我自己无法处理这个任务。
达蒙:
from pandas.tseries.offsets import BDay
df['Date'] = pd.to_datetime(df.Date)
df.assign(Distribution_of_days=df['Date'] + df['Day_number'].apply(BDay))
输出:
Date Timing Day_number Distribution_of_days
0 2016-03-17 8 1 2016-03-18
1 2016-03-17 8 2 2016-03-21
2 2016-03-17 8 3 2016-03-22
3 2016-03-17 8 4 2016-03-23
4 2016-03-17 8 5 2016-03-24
5 2016-03-17 8 6 2016-03-25
6 2016-03-17 8 7 2016-03-28
7 2016-03-17 8 8 2016-03-29
8 2016-08-30 3 1 2016-08-31
9 2016-08-30 3 2 2016-09-01
10 2016-08-30 3 3 2016-09-02
11 2016-05-31 3 1 2016-06-01
12 2016-05-31 3 2 2016-06-02
13 2016-05-31 3 3 2016-06-03
编辑(他在当天开始工作):
df.assign(Distribution_of_days=df['Date'] + df['Day_number'].add(-1).apply(BDay))
输出:
Date Timing Day_number Distribution_of_days
0 2016-03-17 8 1 2016-03-17
1 2016-03-17 8 2 2016-03-18
2 2016-03-17 8 3 2016-03-21
3 2016-03-17 8 4 2016-03-22
4 2016-03-17 8 5 2016-03-23
5 2016-03-17 8 6 2016-03-24
6 2016-03-17 8 7 2016-03-25
7 2016-03-17 8 8 2016-03-28
8 2016-08-30 3 1 2016-08-30
9 2016-08-30 3 2 2016-08-31
10 2016-08-30 3 3 2016-09-01
11 2016-05-31 3 1 2016-05-31
12 2016-05-31 3 2 2016-06-01
13 2016-05-31 3 3 2016-06-02
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句