将列转换为用户定义的周数

2024-04-23 20:11:51 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是python中相当大的数据帧的一个小子集。你知道吗

ID          invoiceDate
1           2017-07-18
2           2017-10-17
3           2017-08-20
4           2017-09-05
5           2017-08-20
6           2017-11-08
7           2017-09-17
8           2017-11-10
9           2017-08-14
10          2017-08-24

假设利息期在2017-07-132017-11-21之间,则相当于20周。我需要将invoiceDate中的每个值映射到相应的周数。例如,2017-07-18被映射到第1周(第一周分别在2017-07-132017-07-19开始和结束)或2017-08-20到第6周(第六周分别在2017-08-172017-08-23开始和结束)。invoiceDate是object类型。你知道吗


Tags: 数据id类型object小子利息周数invoicedate
3条回答

to_period和freq'W-Wed'一起改变一周的开始。你知道吗

s = df['invoiceDate'].dt.to_period('W-Wed').dt.week
df['Week_Num'] = (s - s.min() + 1)

df['Week\u Num']=(df['invoiceDate'])。日期到时间('W-Wed')。日期周- df['invoiceDate']。日期到时间('W-Wed')。日期周最小值() + 1)

输出:

   productID invoiceDate  Week_Num
0          1  2017-07-18         1
1          2  2017-10-17        14
2          3  2017-08-20         6
3          4  2017-09-05         8
4          5  2017-08-20         6
5          6  2017-11-08        17
6          7  2017-09-17        10
7          8  2017-11-10        18
8          9  2017-08-14         5
9         10  2017-08-24         7

IIUC公司

(df.invoiceDate-pd.to_datetime('2017-07-13')).dt.days//7+1
Out[352]: 
0     1
1    14
2     6
3     8
4     6
5    17
6    10
7    18
8     5
9     7
Name: invoiceDate, dtype: int64

你在找这样的东西吗?你知道吗

df = pd.DataFrame()
df['ID'] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
df['InvDate'] = ['2017-07-18', '2017-10-17', '2017-08-20', '2017-09-05', '2017-08-20', '2017-11-08', '2017-09-17', '2017-11-10', '2017-08-14', '2017-08-24']

df['InvDate'] = pd.to_datetime(df['InvDate'])
df['WeekNum'] = df['InvDate'].dt.to_period('W').dt.week
df['WeekNum'] = df['WeekNum'] - df['WeekNum'][0] + 1

输出:

   ID    InvDate  WeekNum
0   1 2017-07-18        1
1   2 2017-10-17       14
2   3 2017-08-20        6
3   4 2017-09-05        8
4   5 2017-08-20        6
5   6 2017-11-08       17
6   7 2017-09-17       10
7   8 2017-11-10       18
8   9 2017-08-14        5
9  10 2017-08-24        7

相关问题 更多 >