Python Pandas read_csv 函数不允许将解析日期更改为所需格式
Posted
技术标签:
【中文标题】Python Pandas read_csv 函数不允许将解析日期更改为所需格式【英文标题】:Python Pandas read_csv function does not allow to change parsed dates into required format 【发布时间】:2020-08-03 01:59:09 【问题描述】:我是 python 初学者,正在尝试使用 pandas 读取 csv 文件。问题是 csv 中的日期列具有以下格式:2020-03-12 00:00:00+00:00。在 read_csv 函数中,我想将日期格式更改为 isoformat (%Y-%m-%d)。我尝试了所有 *** 解决方案,但没有一个有效。这是我的代码:
import time
from datetime import date
url = 'https://www.arcgis.com/sharing/rest/content/items/f10774f1c63e40168479a1feb6c7ca74/data'
countries = pd.read_csv(url,
usecols=[2, 5, 8],
index_col=['Landkreis', 'Meldedatum'],
parse_dates=['Meldedatum'],
squeeze=True
).sort_index()
Current result
“Meldedatum”列应该只显示日期,而不是小时和分钟。但是,我无法更改格式,因为它是一个索引列。
非常感谢您的帮助!
【问题讨论】:
2020-03-12 00:00:00+00:00
正是pandas
显示日期时间列(索引)的方式。更改格式没有意义。
注意:检查例如countries.index[0]
并且您会看到来自Meldedatum
列的第二个索引是Timestamp('2020-03-12 00:00:00+0000', tz='UTC')
。由于您使用parse_dates=['Meldedatum']
调用read_csv
并且Meldedatum
列是正确的ISO 8601 日期时间字符串,所以pandas 完成了它的工作,一切都很好;-)
【参考方案1】:
在不指定任何格式的情况下将您的 csv 正常读取到数据帧中。
然后这样做:
countries['Meldedatum'] = pd.to_datetime(countries['Meldedatum'])
这应该会给你你想要的格式。
【讨论】:
我认为 OP 的代码已经正确解析为日期时间。这只是显示事物的问题...... 此代码生成与 OP 开始时相同的表示形式。【参考方案2】:这就是 pandas 显示 datetime
对象的方式。它始终存储小时/分钟/秒/毫秒的字段,即使它们都设置为零。您无法更改此内部表示。
但是,您可以将 datetime
对象转换为字符串,以便按照您想要的方式格式化它们的表示形式。请记住,您将失去 datetime
对象的所有功能。
您似乎想计算每天发生的次数。如果是这种情况,您应该使用groupby
对象。在这种情况下,我们不需要设置索引列或解析日期。如果您愿意,我们还可以将 datetime
对象的表示形式转换为字符串:
import time
from datetime import date
import pandas as pd
# get the data
url = 'https://www.arcgis.com/sharing/rest/content/items/f10774f1c63e40168479a1feb6c7ca74/data'
countries = pd.read_csv(url, usecols=[2, 5, 8], index_col=None, squeeze=True).sort_index()
# modify dates to strings
countries['Meldedatum'] = countries.Meldedatum.astype(str).apply(lambda x: x.split('T')[0])
# group by Landkreis and Meldedatum
grouped_countries = countries.groupby(['Landkreis', 'Meldedatum']).count()
print(grouped_countries)
# output:
AnzahlFall
Landkreis Meldedatum
LK Ahrweiler 2020-03-12 5
2020-03-13 2
2020-03-14 1
2020-03-16 3
2020-03-17 5
... ...
StadtRegion Aachen 2020-04-14 8
2020-04-15 37
2020-04-16 23
2020-04-17 18
2020-04-18 5
【讨论】:
以上是关于Python Pandas read_csv 函数不允许将解析日期更改为所需格式的主要内容,如果未能解决你的问题,请参考以下文章
在 Python Pandas 中使用多个字符分隔符 read_csv
pandas使用read_csv函数读取文件最后N行数据并保留表头pandas使用read_csv函数读取网络url链接数据
解决错误:pandas.read_csv() 报错 OSError: Initializing from file failed