在 Pandas 中索引日期列时出现错误

发布于 2025-01-10 09:35:53 字数 672 浏览 0 评论 0原文

我试图让熊猫将第一列识别为日期。

import csv
import pandas as pd
import plotly.express as px
cl = open('cl.csv')
cl = pd.read_csv('CL.csv', parse_dates=['Date'], index_col=['Date'])
cl.info()

然后可视化价格:

fig = px.line(cl, y="Adj Close", title='Crude Oil Price', labels = {'Adj Close':'Crude Oil Price(in USD)'})

但它返回一个损坏的图表:

日期索引图表

如果我发表评论输出 'parse_dates=['Date'], index_col=['Date'])' 并保留 'cl = pd.read_csv('CL.csv')' 图表看起来就很好。

没有日期的图表

我在这里做错了什么?

I'm trying to make pandas recognise the first column as a date.

import csv
import pandas as pd
import plotly.express as px
cl = open('cl.csv')
cl = pd.read_csv('CL.csv', parse_dates=['Date'], index_col=['Date'])
cl.info()

Then to visualise the price:

fig = px.line(cl, y="Adj Close", title='Crude Oil Price', labels = {'Adj Close':'Crude Oil Price(in USD)'})

But it gives back a ruined chart:

Date indexed chart

If I comment out 'parse_dates=['Date'], index_col=['Date'])' and just leave 'cl = pd.read_csv('CL.csv')' the chart will look just fine.

Chart without date

What am I doing wrong here?

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

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

发布评论

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

评论(2

只是在用心讲痛 2025-01-17 09:35:53

如果您打印 c1 并且日期看起来不错,那么图表背后的原因可能是您的 c1 未按 Date 排序,在可视化之前执行以下操作:

c1 = c1.sort_values('Date')

If you print c1 out and the dates look fine, then the reason behind the graph could likely be that your c1 wasn't sorted by Date, do the following before visualizing it:

c1 = c1.sort_values('Date')
唱一曲作罢 2025-01-17 09:35:53

 我认为这个问题可能是由列包含的日期格式类型('Date')引起的,因此研究文档,我引用以下内容:对于非标准日期时间解析,请使用pd.to_datetimepd.read_csv 之后。要解析混合时区的索引,请将 date_parser 指定为部分应用的 pandas.to_datetime()utc=True。请参阅解析 具有混合时区的 CSV更多,那么您可以将 cl = pd.read_csv('CL.csv', parse_dates=['Date'], index_col=['Date']) 替换为cl = pd.read_csv('CL.csv', parse_dates=['Date'], date_parser=lambda col: pd.to_datetime(col, utc=True))

  I think this problem can be caused by the type of date format that column contains ('Date'), so researching the documentation, I quote the following: For non-standard datetime parsing, use pd.to_datetime after pd.read_csv. To parse an index or column with a mixture of timezones, specify date_parser to be a partially-applied pandas.to_datetime() with utc=True. See Parsing a CSV with mixed timezones for more, then you could replace cl = pd.read_csv('CL.csv', parse_dates=['Date'], index_col=['Date']) with cl = pd.read_csv('CL.csv', parse_dates=['Date'], date_parser=lambda col: pd.to_datetime(col, utc=True))

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