按照下面的代码,我想(手动)在Python中创建一个每日日期(在“日期”栏中)的数据。但是,代码没有为每日日期提供正确的格式,而忽略日期(所需的格式表示形式如下)。请您告知我如何更正代码,以便以所需格式输入“日期”列吗?提前感谢!
------------------------------------------------------
desired format for date column
2021-03-22 3
2021-04-07 3
2021-04-18 3
2021-05-12 0
------------------------------------------------------
df1 = pd.DataFrame({"date": [2021-3-22, 2021-4-7, 2021-4-18, 2021-5-12],
"x": [3, 3, 3, 0 ]})
df1
date x
0 1996 3
1 2010 3
2 1999 3
3 2004 0发布于 2022-04-22 18:11:49
Python希望将序列2021-3-22中的数字解释为一系列数学操作2021 minus 3 minus 22。
如果希望将该项存储为类似日期的字符串,则需要将其标记为字符串文本数据类型(str),如下所示,将其封装为引号。
import pandas as pd
df1 = pd.DataFrame({"date": ['2021-3-22', '2021-4-7', '2021-4-18', '2021-5-12'],
"x": [3, 3, 3, 0 ]})date列的结果(如这里所示)表明,date列包含object数据类型的元素,其中包含熊猫中的str。请注意,字符串的创建如出一辙(2021-3-22而不是2021-03-22)。
0 2021-3-22
1 2021-4-7
2 2021-4-18
3 2021-5-12
Name: date, dtype: object但是,如果您实际上希望将它们存储为datetime对象,以便您可以对它们执行日期时间操作(即确定两个日期或过滤器之间的天数或特定月份或年份),则需要将这些值转换为datetime对象。
这项技术将达到以下目的:
df1['date'] = pd.to_datetime(df1['date'])这种转换的结果是Pandas datetime对象,它支持纳秒精度(我将其与datetime对象区分开来,后者仅限于微秒精度)。
0 2021-03-22
1 2021-04-07
2 2021-04-18
3 2021-05-12
Name: date, dtype: datetime64[ns]注意,显示的结果现在按照您对datetimes (2021-03-22而不是2021-3-22)的预期格式进行了格式化。
发布于 2022-04-22 18:14:32
您可能希望将该系列创建为一个日期时间,并在这样做时使用以下代码作为字符串,这里有更多信息日期时间
df1 = pd.DataFrame({"date": pd.to_datetime(["2021-3-22", "2021-4-7", "2021-4-18", "2021-5-12"]),
"x": [3, 3, 3, 0 ]})发布于 2022-04-23 13:26:38
FWIW,我经常使用pd.read_csv(io.StringIO(text))将表状数据复制/粘贴到DataFrame中(例如,来自SO问题)。
示例:
import io
import re
import pandas as pd
def df_read(txt, **kwargs):
txt = '\n'.join([s.strip() for s in txt.splitlines()])
return pd.read_csv(io.StringIO(re.sub(r' +', '\t', txt)), sep='\t', **kwargs)
txt = """
date value
2021-03-22 3
2021-04-07 3
2021-04-18 3
2021-05-12 0
"""
df = df_read(txt, parse_dates=['date'])
>>> df
date value
0 2021-03-22 3
1 2021-04-07 3
2 2021-04-18 3
3 2021-05-12 0
>>> df.dtypes
date datetime64[ns]
value int64
dtype: objecthttps://stackoverflow.com/questions/71972895
复制相似问题