How to convert String variable in data frame to date in python - python

from datetime import datetime as dt
from datetime import date
clv['Date']=datetime.strptime(clv['Date'], "%m/%d/%Y").date()

You could use pd.to_datetime. After that you will convert your date string to Series of datetime64 dtype. Then you could access to date with dt.date:
clv['Date']=pd.to_datetime(clv['Date'], format="%m/%d/%Y").dt.date

Related

Convert Date to pandas from ISO 8601 format

I have a date it look like this
2021-12-14T20:32:34Z
how can i convert it to someting like this
2021-12-14 20:32
If you want to do this using Pandas, you can use pandas to convert iso date to datetime object then strftime to convert timestamp into string format
import pandas as pd
import datetime
iso_date = '2021-12-14T20:32:34Z'
fmt = '%Y-%m-%d %H:%M'
pd.to_datetime(iso_date).strftime(fmt)
to apply it to a series of dates of DataFrame column you can replace iso_date with the series of dates and use this code
pd.to_datetime(iso_date).dt.strftime(fmt)

Subtracting datetime in string format with datetime format

I have 2 variables.
One is datetime in string format and the other is datetime in datetime.datetime format.
For example -
2021-09-06T07:58:19.032Z # string
2021-09-05 14:58:10.209675 # datetime.datetime
I want to find out the difference between these 2 times in seconds.
I think we need to have both in datetime before we can do this subtraction.
I'm having a hard time converting the string to datetime.
Can someone please help.
You can convert the string into datetime object with strptime()
An example with your given dates:
from datetime import datetime
# Assuming this is already a datetime object in your code, you don't need this part
# I needed this part to be able to use it as a datetime object
date1 = datetime.strptime("2021-09-05 14:58:10.209675", "%Y-%m-%d %H:%M:%S.%f")
## The part where the string is converted to datetime object
# Since the string has "T" and "Z", we will have to remove them before we convert
formatted = "2021-09-06T07:58:19.032Z".replace("T", " ").replace("Z", "")
>>> 2021-09-06 07:58:19.032
# Finally, converting the string
date2 = datetime.strptime(formatted, "%Y-%m-%d %H:%M:%S.%f")
# Now date2 variable is a datetime object
# Performing a simple operation
print(date1 - date2)
>>> -1 day, 6:59:51.177675
Convert the str to datetime via strptime() and then get the difference of the 2 datetime objects in seconds via total_seconds().
from datetime import datetime, timezone
# Input
dt1_str = "2021-09-06T07:58:19.032Z" # String type
dt2 = datetime(year=2021, month=9, day=5, hour=14, minute=58, second=10, microsecond=209675, tzinfo=timezone.utc) # datetime type
# Convert the string to datetime
dt1 = datetime.strptime(dt1_str, "%Y-%m-%dT%H:%M:%S.%f%z")
# Subtract the datetime objects and get the seconds
diff_seconds = (dt1 - dt2).total_seconds()
print(diff_seconds)
Output
61208.822325
The first string time you mention could be rfc3339 format.
A module called python-dateutil could help
import dateutil.parser
dateutil.parser.parse('2021-09-06T07:58:19.032Z')
datetime module could parse this time format by
datetime.datetime.strptime("2021-09-06T07:58:19.032Z","%Y-%m-%dT%H:%M:%S.%fZ")
But this way may cause trouble when get a time in another timezone because it doesn't support timezone offset.

Date Format conversion in pyspark

I have a string column in df which contains date in dd/MM/yyyy format and I want to convert that format to yyyy-MM-dd using with column
If you know you will have a consistent format in your column, you can pass this to 'to_datetime'.
You can try like below-
df['column_name'] = pd.to_datetime(df['column_name'], format='%d/%m/%y').dt.strftime('%Y-%m-%d')
Using python's datetime lib it can be done accordingly:
from datetime import datetime
date_string = '10/10/2000'
datetime_object = datetime.strptime(date_string, '%d/%m/%Y')
converted_date_string = datetime_object.strftime('%Y-%m-%d')

why strftime convert datetime to object format?

i converted date from y/m/d to d/m/y format in a data-frame using
from pandas import pd
df['Date'] = pd.to_datetime(df['Date'], format='%Y-%m-%d ').dt.strftime('%d/%m/%Y')
but after this code execute the df['Date'] field become object format,when i try to convert datetimeformat it again become y/m/d form ,is there any solution for this?

Pandas, pd.to_datetime(), convert date to datetime

I have a timeserie containing dates in format dd/mm/yy and datetime in format dd/mm/yy hh:MM.
I am using pd.to_datetime to convert them to proper datetime format, which works fine. However, I would like to convert the datapoints in format dd/mm/yy to dd/mm/yy 00:00 or even better, dd/mm/yy 08:00.
How can I do that?
from datetime import date
from datetime import datetime
datetime.today().strftime('%Y-%m-%d') + " 8:00"
Output:
'2017-01-27 8:00'

Categories

Resources