pandas convert date to week number - pandas

I got this error when trying to convert dateto week
Could it be the date values not datetime like values?
data['DATECREATED'].dt.week
error screenshot

I think you need convert column to datetime first and assign back to column:
data['DATECREATED'] = pd.to_datetime(data['DATECREATED'])
data['new'] = data['DATECREATED'].dt.strftime('%Y%V')
data['CreatedWW'] = data['DATECREATED'].dt.week

Related

How to use format function to update a column

I have a column of date datatype (the column name is orderdate). I want to convert it to 'fa' culture using format function.
I wrote different kind of query such as below, but I got different conversion error.
UPDATE [dbo].[orderstest]
SET [OrderDate] = CAST(FORMAT([OrderDate], 'yyyy/MM/dd', 'fa') AS DATETIME)
try this:
UPDATE [dbo].[orderstest]
SET [OrderDate] = CAST(FORMAT([OrderDate], 'yyyy/MM/dd', 'fa-ir') AS DATETIME)
But this is not the trust way because you are converting the original date to a Persian and then converting it to date time!
I suggest saving all dates as us-date and everywhere you want to get it, convert to Persian

how to change date format to just year and month but must stay as a date value not varchar, or char..?

I read other similar question where the answer is to use FORMAT(getdate(),'yyy-MM') or something similar. However the problem for me in using anything like this, is that it changes the date type to a varchar or char. I need it to stay as datetype but just want Year and Month.. I tried the following..-> FORMAT(a.completeddate,'yyy-MM') which works to change to year and month but the date is no longer a datetype or date format. So when I try to do the following -> select #FirstCompletion = (A.completeddate) i get this error..Conversion failed when converting date and/or time from character string. Basically I need to convert the date column to year and month as date format so I can then pass values to variables using select #FirstCompletion = (A.completeddate) and set #secondMonth = DATEADD(month, 2, #FirstCompletion) which are Datetype variables.. Would appreciate any help I can get.. Thanks..

How can I filter a pandas data frame based on a datetime column between current time and 10 hours ago?

I have a pandas DataFrame which includes a datetime column and I want to filter the data frame between the current hour and 10 hours ago. I have tried different ways to do it but still I cannot handle it. Because when I want to use pandas, the column type is Series and I can't use timedelta to compare them. If I use a for loop to compare the column as a string to my time interval, it is not efficient.
The table is like this:
And I want to filter the 'dateTime' column between current time and 10 hours ago, then filter based on 'weeks' > 80.
I have tried these codes as well But they have not worked:
filter_criteria = main_table['dateTime'].sub(today).abs().apply(lambda x: x.hours <= 10)
main_table.loc[filter_criteria]
This returns an error:
TypeError: unsupported operand type(s) for -: 'str' and 'datetime.datetime'
Similarly this code has the same problem:
main_table.loc[main_table['dateTime'] >= (datetime.datetime.today() - pd.DateOffset(hours=10))]
And:
main_table[(pd.to_datetime('today') - main_table['dateTime'] ).dt.hours.le(10)]
In all of the code above main_table is the name of my data frame.
How can I filter them?
First you need to make sure that your datatype in datetime column is correct. you can check it by using:
main_table.info()
If it is not datetime (i.e, object) convert it:
# use proper formatting if this line does not work
main_table['dateTime'] = pd.to_datetime(main_table['dateTime'])
Then you need to find the datetime object of ten hour before current time (ref):
from datetime import datetime, timedelta
date_time_ten_before = datetime.now() - timedelta(hours = 10)
All it remains is to filter the column:
main_table_10 = main_table[main_table['dateTime'] >= date_time_ten_before]

Extract the first 10 values of a column and create a new one [duplicate]

I am looking to convert datetime to date for a pandas datetime series.
I have listed the code below:
df = pd.DataFrame()
df = pandas.io.parsers.read_csv("TestData.csv", low_memory=False)
df['PUDATE'] = pd.Series([pd.to_datetime(date) for date in df['DATE_TIME']])
df['PUDATE2'] = datetime.datetime.date(df['PUDATE']) #Does not work
Can anyone guide me in right direction?
You can access the datetime methods of a Pandas series by using the .dt methods (in a aimilar way to how you would access string methods using .str. For your case, you can extract the date of your datetime column as:
df['PUDATE'].dt.date
This is a simple way to get day of month, from a pandas
#create a dataframe with dates as a string
test_df = pd.DataFrame({'dob':['2001-01-01', '2002-02-02', '2003-03-03', '2004-04-04']})
#convert column to type datetime
test_df['dob']= pd.to_datetime(test_df['dob'])
# Extract day, month , year using dt accessor
test_df['DayOfMonth']=test_df['dob'].dt.day
test_df['Month']=test_df['dob'].dt.month
test_df['Year']=test_df['dob'].dt.year
I think you need to specify the format for example
df['PUDATE2']=datetime.datetime.date(df['PUDATE'], format='%Y%m%d%H%M%S')
So you just need to know what format you are using

Converting the Create Date Column in Date Only format During Search ORM in Odoo 8

Good Day! I have this problem I have a code like this
tree_model = self.env['hr.reception'].search([('create_date','=',date_from)])
the date_from is only a date only parameter while the column create_date is datetime column I only want to format the create_date as date only format
is this possible just like in postgres
(create_date::date)
Thanks for the Help
You can achieve it using date() method which will return the date format instead of datetime.
For example:
1. datetime.now() will result in datetime format.
2. datetime.datetime.now().date() will result in date format.
Try : create_date.strftime('%Y-%m-%d')