将“熊猫”列转换为用户定义的周数

时间:2018-07-30 13:22:26

标签: python pandas

下面是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是对象类型。

3 个答案:

答案 0 :(得分:4)

to_period与频率“ W-Wed”一起使用会改变一周的开始时间。

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

df ['Week_Num'] =(df ['invoiceDate']。dt.to_period('W-Wed')。dt.week-                       df ['invoiceDate']。dt.to_period('W-Wed')。dt.week.min()+ 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

答案 1 :(得分:2)

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

答案 2 :(得分:1)

您是否正在寻找类似的东西?

 using (SqlDataReader oReader = command.ExecuteReader())
                    {
                        while (oReader.Read())
                        {
                            if (oReader["comments1"].ToString() == "0")
                            {
                                MessageBox.Show("CHECK THE COMMENTS AND THE GIVEN VALUE");
                                ;
                            }
                            else
                            {
                                MessageBox.Show("Inserted");
                                ClearTextBoxes(this);
                                button2.Enabled = false;
                            }



                        }

输出:

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