pandas - 熊猫解析周数
问题描述
考虑以下文件test.csv
:
"Time","RegionCode","RegionName","NumValue"
"2009-W40","AT","Austria",0
"2009-W40","BE","Belgium",54
"2009-W40","BG","Bulgaria",0
"2009-W40","CZ","Czech Republic",1
我想解析存储在第一列中的日期,并想创建一个像这样的数据框:
parser = lambda x: pd.datetime.strptime(x, "%Y-W%W")
df = pd.read_csv("test.csv", parse_dates=["Time"], date_parser=parser)
结果:
Time RegionCode RegionName NumValue
0 2009-01-01 AT Austria 0
1 2009-01-01 BE Belgium 54
2 2009-01-01 BG Bulgaria 0
3 2009-01-01 CZ Czech Republic 1
但是,生成的时间列不正确。我得到的只是“2019-01-01”,这肯定不是一年中的第 40 周。难道我做错了什么?解析周时还有其他人遇到这个问题吗?
解决方案
你几乎是正确的。唯一的问题是,您无法根据周数和年份确定具体日期。诀窍是将星期几添加为 1。
我建议pd.to_datetime()
像您最初尝试的那样坚持并提供日期格式字符串。加上1应该可以正常工作:
pd.to_datetime(df['Time'] + '-1', format='%Y-W%W-%w')
# 0 2009-10-05
# 1 2009-10-05
# 2 2009-10-05
# 3 2009-10-05
推荐阅读
- javascript - jquery子函数突然停止工作-可能折旧
- php - 如何在 fpdf 中显示是和否而不是二进制 1 和 0?
- c# - Linq Concat to Lazy-Load it's contents
- eclipse - 模型到模型转换 - 源没有元模型
- loops - 执行循环时出现 nan 错误
- objective-c - 编译时,Swift 中的字典无法转换为 Objective C 中的 NSDictionary(预期类型)
- macos - OS X 应用程序如何获取卷的分配块(集群大小)
- angular - 调用服务方法并在拦截器中正确使用它
- r - 如何在ggplot2 R中更改stat_poly_eq的字体大小
- wcf - Wcf 云服务在没有登录信息的情况下验证调用者身份