我有以下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
列Time
由string
组成。
每个字符串
由周数(从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
我该怎么做?
dd 是周一还是周日,如何选择?就像下面的替代输出一样?
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
我尝试查找任何其他专门与周数相关的问题,但找不到。
如果这是重复的,请告诉我:)
最佳答案
您可以使用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
:年份
更新
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
注意:根据您的区域设置
调整星期几(0、1 或 6)。
关于python - 将 pandas DataFrame 中的字符串转换为日期时间(从周数/年转换为 dd/mm/yy),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71254846/