首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何以正确的格式手动输入包含每日日期的Python数据

如何以正确的格式手动输入包含每日日期的Python数据
EN

Stack Overflow用户
提问于 2022-04-22 17:59:27
回答 3查看 250关注 0票数 1

按照下面的代码,我想(手动)在Python中创建一个每日日期(在“日期”栏中)的数据。但是,代码没有为每日日期提供正确的格式,而忽略日期(所需的格式表示形式如下)。请您告知我如何更正代码,以便以所需格式输入“日期”列吗?提前感谢!

代码语言:javascript
复制
------------------------------------------------------
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
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-04-22 18:11:49

Python希望将序列2021-3-22中的数字解释为一系列数学操作2021 minus 3 minus 22

如果希望将该项存储为类似日期的字符串,则需要将其标记为字符串文本数据类型(str),如下所示,将其封装为引号。

代码语言:javascript
复制
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)。

代码语言:javascript
复制
0    2021-3-22
1     2021-4-7
2    2021-4-18
3    2021-5-12
Name: date, dtype: object

但是,如果您实际上希望将它们存储为datetime对象,以便您可以对它们执行日期时间操作(即确定两个日期或过滤器之间的天数或特定月份或年份),则需要将这些值转换为datetime对象。

这项技术将达到以下目的:

代码语言:javascript
复制
df1['date'] = pd.to_datetime(df1['date'])

这种转换的结果是Pandas datetime对象,它支持纳秒精度(我将其与datetime对象区分开来,后者仅限于微秒精度)。

代码语言:javascript
复制
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)的预期格式进行了格式化。

票数 1
EN

Stack Overflow用户

发布于 2022-04-22 18:14:32

您可能希望将该系列创建为一个日期时间,并在这样做时使用以下代码作为字符串,这里有更多信息日期时间

代码语言:javascript
复制
df1 = pd.DataFrame({"date": pd.to_datetime(["2021-3-22", "2021-4-7", "2021-4-18", "2021-5-12"]),
"x": [3, 3, 3, 0 ]})
票数 1
EN

Stack Overflow用户

发布于 2022-04-23 13:26:38

FWIW,我经常使用pd.read_csv(io.StringIO(text))将表状数据复制/粘贴到DataFrame中(例如,来自SO问题)。

示例:

代码语言:javascript
复制
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: object
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71972895

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档