英文:
Python Pandas: how to set date format dd/mm/yyyy or dd.mm.yyyy and dtypes = datetime64
问题
df['Date'] = df['Date'].dt.strftime('%d/%m/%Y') # 或者 df['Date'] = df['Date'].dt.strftime('%d.%m.%Y')
print(df.dtypes)
英文:
If I have a dataframe created from a csv file containing a column with date values (11.01.2023) how can I transform the column into a date format like dd/mm/yyyy (day 2 characters, month 2 characters, years 4 characters) or like dd.mm.yyyy? Thank you all
import pandas as pd
df = pd.DataFrame({'Date': {0: '11.01.2023 ', 1: '22.01.2023', 2: '08.02.2023' },
'Price':{0:123, 1:456, 2:789}})
df
I tried:
import pandas as pd
df = pd.DataFrame({'Date': {0: '11.01.2023 ', 1: '22.01.2023', 2: '08.02.2023' },
'Price':{0:123, 1:456, 2:789}})
df['Date'].str.replace('.', '/', regex=False)
print(df.dtypes) # The Date column is object format
df['Date'] = pd.to_datetime(df['Date'], dayfirst=True)
print(df.dtypes) # The Date column is format datetime64[ns]
print('df', df) # The date column is of the type yyyy-mm-dd
At this point how should I do to transform the Date column into a "dd/mm/yyyy"
or "dd.mm.yyyy" format and dtypes =datetime64 ?
See Image:
thank you all
答案1
得分: 1
这是一个难以回答的问题。这取决于您的用例。
如果您在笔记本环境中使用pandas,那么您应该使用一个样式器。以下是一个简短的示例解释它的工作原理:
import pandas as pd
from datetime import timedelta
from IPython.display import display
df = pd.DataFrame({'Date': {0: '11.01.2023 ', 1: '22.01.2023', 2: '08.02.2023' },
'Price':{0:123, 1:456, 2:789}})
df['Date'] = pd.to_datetime(df['Date'], dayfirst=True)
df_styler = df.style.format({'Date': lambda t: t.strftime("%m/%d/%Y")})
print(df.dtypes) # dtypes are not changed
print(df_styler) # printing a styler doesn't show the dataframe
print(df) # printing a dataframe this way does not involve the styler
display(df_styler) # this is how to render a dataframe with a styler
df['Date'] = df['Date'] + timedelta(days=5)
# the styler doesn't need to be remade if df changes
display(df_styler)
# in a notebook environment having a `df_styler` as the last
# command is equivalent to `display(df_styler)`
df_styler
如果您没有在笔记本环境中使用,并且/或者希望使用 print(df)
而不是将数据框呈现为HTML对象,则我不知道有什么好的解决方案。在这种情况下,我可能会编写自己的 print_df
函数,该函数会将 Date
列即时替换为使用 strftime
调用格式化的字符串列。
英文:
It is a deceptively hard question to answer. It depends on your use case.
If you are using pandas in a notebook environment, then you should use a styler. Here's a short example explaining how it works:
import pandas as pd
from datetime import timedelta
from IPython.display import display
df = pd.DataFrame({'Date': {0: '11.01.2023 ', 1: '22.01.2023', 2: '08.02.2023' },
'Price':{0:123, 1:456, 2:789}})
df['Date'] = pd.to_datetime(df['Date'], dayfirst=True)
df_styler = df.style.format({'Date': lambda t: t.strftime("%m/%d/%Y")})
print(df.dtypes) # dtypes are not changed
print(df_styler) # printing a styler doesn't show the dataframe
print(df) # printing a dataframe this way does not involve the styler
display(df_styler) # this is how to render a dataframe with a styler
df['Date'] = df['Date'] + timedelta(days=5)
# the styler doesn't need to be remade if df changes
display(df_styler)
# in a notebook environment having a `df_styler` as the last
# command is equivalent to `display(df_styler)`
df_styler
If you're not using a notebook environment, you can use df_styler.to_html()
to get a formatted table in HTML.
if you are not in a notebook environment and/or want to use print(df)
instead of rendering the dataframe as an HTML object, there is no good solution that I know of. What I would probably do in that case is write my own print_df
function which would replace the Date
column on the fly with a string column formatted with strftime
call.
答案2
得分: 0
你可以使用strftime函数将datetime列格式化为特定的字符串格式。使用%d.%m.%Y格式字符串来使用.作为分隔符。
import pandas as pd
df = pd.DataFrame({'Date': {0: '11.01.2023 ', 1: '22.01.2023', 2: '08.02.2023' },
'Price':{0:123, 1:456, 2:789}})
df['Date'] = pd.to_datetime(df['Date'], dayfirst=True)
# 将datetime列格式化为"dd.mm.yyyy"格式
df['Date'] = df['Date'].dt.strftime('%d.%m.%Y')
print(df.dtypes)
print(df)
试试这个。
参考链接:https://www.geeksforgeeks.org/python-pandas-series-dt-strftime/
英文:
You can use the strftime function to format the datetime column into a specific string format. Use the . separator by using the %d.%m.%Y format string.
import pandas as pd
df = pd.DataFrame({'Date': {0: '11.01.2023 ', 1: '22.01.2023', 2: '08.02.2023' },
'Price':{0:123, 1:456, 2:789}})
df['Date'] = pd.to_datetime(df['Date'], dayfirst=True)
# Format the datetime column into "dd.mm.yyyy" format
df['Date'] = df['Date'].dt.strftime('%d.%m.%Y')
print(df.dtypes)
print(df)
Try this.
Reference: https://www.geeksforgeeks.org/python-pandas-series-dt-strftime/
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论