RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1412499
Accepted
Vasyl Kolomiets
Vasyl Kolomiets
Asked:2022-07-22 15:21:48 +0000 UTC2022-07-22 15:21:48 +0000 UTC 2022-07-22 15:21:48 +0000 UTC

在 Pandas 中处理不同本地化的日期。PyICU 还是“手柄”?

  • 772

使用在线商店时,您必须处理来自不同本地化的数据。它们包含一个对处理很重要的日期。自然,日期格式在不同语言的意义上是不同的——西班牙语、法语、英语、德语等。

这是西班牙语的示例:
“2021 年 9 月 9 日 12:19:03 GMT-7”
“2022 年 2 月 8 日 23:28:33 GMT-8”
“1 年前 2021 00:31:47 GMT-7”

当您尝试在 Pfndas 中使用 pd.to_datetime() 时,您会遇到错误。

pd.to_datetime("1 ago 2021 00:31:47 GMT-7")
    
ParserError: Unknown string format: 1 ago 2021 00:31:47 GMT-7

这里和这里都有关于该主题的解决方案 - 使用PyICU. 但是没有 Windows 的“本机”安装。
同时,我很想用每种语言的“句柄”替换几个月的必要缩写,并pd.to_datetime()在上下文替换后使用它们。然后对于每种语言可以有几个语言环境。西班牙语——墨西哥和西班牙等。

问题 1PyICU :使用 “手动”替换几个月的缩写有什么好处以及可能出现什么“问题”。通过文件名,我可以理解它是什么语言。

问题 2:也许出现了一些新的模块来解析日期而不需要告诉它语言?

问题3,短)csv :如果日期中有不同的语言,读取时如何解析日期?

添加。我认为这里给出的解决方案将适合我,并且可以在此处获取带有偏移时钟的所有区域的表。

python
  • 1 1 个回答
  • 59 Views

1 个回答

  • Voted
  1. Best Answer
    Vasyl Kolomiets
    2022-07-23T01:49:06Z2022-07-23T01:49:06Z

    我决定在一个单独的环境中安装适合我的环境,PyICU-2.9-cp39-cp39-win_amd64.whl取自此处。借用上述来源的代码并吐出时区时间,我得到了一个通用解析器:

    import icu  # PyICU  https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyicu
    # import pytz  # $ pip install pytz
    
    def parse_date_tz(date_str: str, locale: str) -> datetime:
        """
        Parse datetime string with locale shortcut specified to naive datetime.
    
        Parameters
        ----------
        date_str : str
            datetime stamp to be parsed.
            Example: "1 ago 2021 00:31:47 GMT-7"
        locale : str
            Standart locale shortcut.
            Example: 'es_MX'
    
        Returns
        -------
        datetime.datetime
            parsed naive datetime.
    
    
        >>> parse_date_tz("1 ago 2021 00:31:47 GMT-7", 'es_MX')
        >>> datetime.datetime(2021, 8, 1, 0, 31, 47)
    
        """
        tz = icu.ICUtzinfo.getDefault()  # any ICU timezone will do here
        df = icu.DateFormat.createDateTimeInstance(icu.DateFormat.MEDIUM,
                                                   icu.DateFormat.MEDIUM,
                                                   icu.Locale(locale))
        df.setTimeZone(tz.timezone)
        ts = df.parse(date_str)  # u'3 févr. 2015 14:26:00 CET'  NOTE: CET is ignored
        naive_dt = datetime.fromtimestamp(ts, tz).replace(tzinfo=None)
        return naive_dt
    

    好吧,它完全适用于所需的行列,如下所示:

    df_df.loc[:, "fecha/hora"] = df_df["fecha/hora"].apply(parse_date_tz, locale='es_MX')
    
     
    

    由于文件名包含国家/地区缩写,因此不难找到语言环境。比方说“es_MX”或“es_ES”。
    作品。会有问题 - 我会更正答案。)

    添加于 2022.08.06
    到目前为止,一切正常。
    唯一的澄清。conda最好使用参数--no-deps安装。

    • 1

相关问题

  • 是否可以以某种方式自定义 QTabWidget?

  • telebot.anihelper.ApiException 错误

  • Python。检查一个数字是否是 3 的幂。输出 无

  • 解析多个响应

  • 交换两个数组的元素,以便它们的新内容也反转

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5