将 pandas DataFrame 中的字符串转换为日期时间(从周数/年转换为 dd/mm/yy)

发布于 2025-01-10 06:25:16 字数 735 浏览 0 评论 0原文

我有以下 DataFrame

example = {"Time":["01/2021","02/2021","04/2021","05/2021"]}
df = pd.DataFrame( example )


    Time
0   01/2021
1   02/2021
2   04/2021
3   05/2021

Timestring 组成。 每个字符串由周数(从1到52)和年份组成。

我想转换为 dd/mm/yyyy

    Time    Time Converted 
0   01/2021  10/01/2021
1   02/2021  17/01/2021
2   04/2021  24/01/2021
3   05/2021  31/01/2021
  1. 我该怎么做?

  2. dd 是周一还是周日,如何选择?就像下面的替代输出一样?

     时间 时间转换 
    0 01/2021 04/01/2021
    1 2021年2月11日 2021年1月11日
    2 2021年4月18日 2021年1月18日
    3 2021年5月25日 2021年1月25日
    

我试图找到任何其他专门涉及周数的问题,但我找不到。

如果这是重复的,请告诉我:)

I have the following DataFrame

example = {"Time":["01/2021","02/2021","04/2021","05/2021"]}
df = pd.DataFrame( example )


    Time
0   01/2021
1   02/2021
2   04/2021
3   05/2021

Column Time is composed by strings.
Each string is composed by week number (from 1 to 52) and Year.

I would like to convert to dd/mm/yyyy

    Time    Time Converted 
0   01/2021  10/01/2021
1   02/2021  17/01/2021
2   04/2021  24/01/2021
3   05/2021  31/01/2021
  1. How can I do that?

  2. How to chose the dd if it should be Monday or Sunday? Like in the following alternative output?

         Time    Time Converted 
    0    01/2021  04/01/2021
    1    02/2021  11/01/2021
    2    04/2021  18/01/2021
    3    05/2021  25/01/2021
    

I tried to find any other question specifically dealing with the week number, but I couldn't find it.

If this is a duplicate please let me know :)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

↙温凉少女 2025-01-17 06:25:16

您可以使用 pd.to_datetime

df['Time Converted'] = pd.to_datetime('1/' + df['Time'], format='%w/%U/%Y')
print(df)

# Output
      Time Time Converted
0  01/2021     2021-01-04
1  02/2021     2021-01-11
2  04/2021     2021-01-25
3  05/2021     2021-02-01
  • %w:工作日编号
  • %U:一年中的周数
  • %Y :年份

更新

我想获取一周的最后一天,而不是星期一。 (例如 10/01/2021 而不是 04/01/2021)。

df['Time Converted'] = pd.to_datetime('0/' + df['Time'], format='%w/%U/%Y') \
                       + pd.DateOffset(days=7)
print(df)

# Output
      Time Time Converted
0  01/2021     2021-01-10
1  02/2021     2021-01-17
2  04/2021     2021-01-31
3  05/2021     2021-02-07

注意:根据您的区域设置调整星期几(0、1 或 6)。

You can use pd.to_datetime:

df['Time Converted'] = pd.to_datetime('1/' + df['Time'], format='%w/%U/%Y')
print(df)

# Output
      Time Time Converted
0  01/2021     2021-01-04
1  02/2021     2021-01-11
2  04/2021     2021-01-25
3  05/2021     2021-02-01
  • %w: Weekday number
  • %U: Week number of the year
  • %Y: Year

Update

I would like to get the last day of the week and not Monday. (e.g. 10/01/2021 instead of 04/01/2021).

df['Time Converted'] = pd.to_datetime('0/' + df['Time'], format='%w/%U/%Y') \
                       + pd.DateOffset(days=7)
print(df)

# Output
      Time Time Converted
0  01/2021     2021-01-10
1  02/2021     2021-01-17
2  04/2021     2021-01-31
3  05/2021     2021-02-07

Note: adjust the day of the week (0, 1 or 6) according to your locale.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文