python - 来自 2 列的 Pandas read_csv parse_dates
问题描述
我在这里没有找到非常适合我的情况的帖子。我有一个 csv 文件,其中第一列是年(2002 年),第二列是月份(一月),第三列是 MonthCode(1 表示一月等)。我想导入 Pandas 数据框以创建完整日期索引。以下代码给出了一个错误,但应该向您展示我正在尝试做什么。
错误是:ValueError:时间数据'2002'与格式'%Y%b%d'不匹配
注意:我的数据中没有一个月中的某一天,所以我必须使用第一天或最后一天,除非有办法只索引年和月而没有日。
数据如下所示:
Year Month Month Code District Code District
2002 January 1 1 Albany
2002 January 1 2 Allegany
2002 January 1 3 Broome
2002 January 1 4 Cattaraugus
2002 January 1 5 Cayuga
不起作用的代码:
file = 'C:/.../snap.csv'
parser = lambda date: pd.datetime.strptime(date, '%Y%b%d')
# create dataframe from csv file
snapdf = pd.read_csv(file, parse_dates = [0,1], date_parser = parser)
# NOTE: I also tried parse_dates = [0,2] but same error
解决方案
我终于把它运行起来了,最后它实际上非常简单。
snapdf["DateIndex"] = pd.to_datetime(snapdf['Year'].astype(str), format='%Y')
这从数据框的 Year 列中获取值(存储为 Int)并将其转换为新列 DateIndex 中的日期字符串。由于没有月份或日期数据,它会自动插入 01/01 作为月份和日期。
因此,年份列中的 2017 变为 01/10/2017
推荐阅读
- javascript - 如何在javascript中打印元素异步推送到它的数组?
- d3.js - getter mettod .attr() 是否会修改与元素关联的数据?
- javascript - React Children 仅在加载时崩溃
- javascript - 有没有办法将游戏代码放在选项卡中
- r - Log Weibull 分布是否有 R 函数?
- python-3.x - 如何在 Python 中同时打开多个文件?
- javascript - 如何在 PHP 中的特定时间使用不同的变量
- r - R Markdown 不打印目录
- java - 将 JSON 对象映射到 Java 类
- three.js - 天空盒的地板在 THREE.js 中旋转 180 度