天道酬勤,学无止境

在熊猫时间序列图中从 Axes.get_xlim() 获取可用日期(Getting usable dates from Axes.get_xlim() in a pandas time series plot)

问题

我正在尝试从使用 pandas 创建的时间序列图中将绘图的 xlimits 作为 python 日期时间对象。 使用ax.get_xlim()将轴限制返回为numpy.float64 ,我不知道如何将数字转换为可用的日期时间。

import pandas 
from matplotlib import dates
import matplotlib.pyplot as plt
from datetime import datetime
from numpy.random import randn

ts = pandas.Series(randn(10000), index=pandas.date_range('1/1/2000',
    periods=10000, freq='H')) 
ts.plot()
ax = plt.gca()

ax.set_xlim(datetime(2000,1,1))
d1, d2 = ax.get_xlim()
print "%s(%s) to %s(%s)" % (d1, type(d1), d2, type(d2))

print "Using matplotlib: %s" % dates.num2date(d1)
print "Using datetime: %s" % datetime.fromtimestamp(d1)

返回:

262968.0 (<type 'numpy.float64'>) to 272967.0 (<type 'numpy.float64'>)
Using matplotlib: 0720-12-25 00:00:00+00:00
Using datetime: 1970-01-03 19:02:48

根据 pandas timeseries 文档,pandas 使用 numpy.datetime64 dtype。 我正在使用熊猫版本'0.9.0'。

我使用get_xlim()而不是直接访问 pandas 系列,因为当用户在绘图区域中移动时,我使用xlim_changed回调来做其他事情。

破解以获取可用值

对于上面的示例,限制从 Epoch 开始以小时为单位返回。 所以我可以转换为纪元以来的秒数并使用time.gmtime()来获得可用的地方,但这仍然感觉不对。

In [66]: d1, d2 = ax.get_xlim()

In [67]: time.gmtime(d1*60*60)
Out[67]: time.struct_time(tm_year=2000, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=1, tm_isdst=0)  
回答1

matplotlib.dates 的当前行为:

datetime 对象转换为浮点数,表示自 0001-01-01 UTC 以来的天数加上 1。例如,0001-01-01, 06:00 是 1.25,而不是 0.25。 辅助函数 date2num()、num2date() 和 drange() 用于促进与日期时间和数字范围的轻松转换。

pandas.tseries.converter.PandasAutoDateFormatter() 似乎建立在此之上,所以:

x = pandas.date_range(start='01/01/2000', end='01/02/2000')
plt.plot(x, x)
matplotlib.dates.num2date(plt.gca().get_xlim()[0])

给出:

datetime.datetime(2000, 1, 1, 0, 0, tzinfo=<matplotlib.dates._UTC object at 0x7ff73a60f290>)
回答2
# First convert to pandas Period
period = pandas.tseries.period.Period(ordinal=int(d1), freq=ax.freq)
# Then convert to pandas timestamp
ts = period.to_timestamp()
# Then convert to date object
dt = ts.to_datetime()

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • Getting usable dates from Axes.get_xlim() in a pandas time series plot
    I'm trying to get the xlimits of a plot as a python datetime object from a time series plot created with pandas. Using ax.get_xlim() returns the axis limits as a numpy.float64, and I can't figure out how to convert the numbers to a usable datetime. import pandas from matplotlib import dates import matplotlib.pyplot as plt from datetime import datetime from numpy.random import randn ts = pandas.Series(randn(10000), index=pandas.date_range('1/1/2000', periods=10000, freq='H')) ts.plot() ax = plt.gca() ax.set_xlim(datetime(2000,1,1)) d1, d2 = ax.get_xlim() print "%s(%s) to %s(%s)" % (d1, type(d1)
  • matplotlib是否具有在轴坐标中绘制对角线的功能?(Does matplotlib have a function for drawing diagonal lines in axis coordinates?)
    问题 Matplotlib轴具有axhline和axvline函数,用于分别在给定的y或x坐标上绘制水平或垂直线,而与axvline的数据比例无关。 是否有类似的函数绘制恒定对角线? 例如,如果我有一个具有相似域的变量散点图,了解它们是落在y = x线的上方还是下方通常是有用的: mean, cov = [0, 0], [(1, .6), (.6, 1)] x, y = np.random.multivariate_normal(mean, cov, 100).T y += x + 1 f, ax = plt.subplots(figsize=(6, 6)) ax.scatter(x, y, c=".3") ax.plot([-3, 3], [-3, 3], ls="--", c=".3") ax.set(xlim=(-3, 3), ylim=(-3, 3)) 当然,可以通过抓住轴限制( ax.get_xlim()等)以编程方式完成此操作,但是a)采取了一些额外的步骤,而b)在可能会在绘图上最终获得更多数据的情况下比较脆弱,改变极限。 (实际上,在某些情况下,仅添加常数线本身即可拉伸轴)。 最好这样做,例如ax.axdline(ls="--", c=".3") ,但尚不清楚matplotlib代码库中是否存在类似的内容。 我想,您需要做的就是修改axhline代码以从[0, 1
  • 在Python中以YYYY-MM-DD获取今天的日期?(Getting today's date in YYYY-MM-DD in Python?)
    问题 我正在使用: str(datetime.datetime.today()).split()[0] 以YYYY-MM-DD格式返回今天的日期。 有没有那么简单的方法可以做到这一点? 回答1 您可以使用strftime: >>> from datetime import datetime >>> datetime.today().strftime('%Y-%m-%d') '2021-01-26' 此外,对于任何还在末尾寻找零填充的小时,分​​钟和秒的人:(Gabriel Staples发表评论) >>> datetime.today().strftime('%Y-%m-%d-%H:%M:%S') '2021-01-26-16:50:03' 回答2 您可以使用datetime.date.today()并将生成的datetime.date对象转换为字符串: from datetime import date today = str(date.today()) print(today) # '2017-12-26' 回答3 我总是为此使用isoformat()函数。 from datetime import date today = date.today().isoformat() print(today) # '2018-12-05' 请注意,如果您还需要标准格式的时间
  • 如何在 3D Matplotlib 散点图中为特定的网格线/刻度线着色?(How to color a specific gridline/tickline in 3D Matplotlib Scatter Plot figure?)
    问题 我正在尝试修改 3D matplotlib 散点图中特定网格线的颜色/厚度,在这种情况下,我希望 -30 z 轴网格线为黑色、粗体或加粗,以便在其他网格线中脱颖而出。 这是从 mplot3d 散点图教程中看到的基本代码: import numpy as np from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt def randrange(n, vmin, vmax): return (vmax-vmin)*np.random.rand(n) + vmin fig = plt.figure() ax = fig.add_subplot(111, projection='3d') n = 100 for c, m, zl, zh in [('r', 'o', -50, -25), ('b', '^', -30, -5)]: xs = randrange(n, 23, 32) ys = randrange(n, 0, 100) zs = randrange(n, zl, zh) scat = ax.scatter(xs, ys, zs, c=c, marker=m) ax.set_xlabel('X Label') ax.set_ylabel('Y Label') ax.set_zlabel
  • 如何在熊猫中使用时区读取日期时间(How to read datetime with timezone in pandas)
    问题 我正在尝试从csv创建一个数据框,它的第一列就像 "2013-08-25T00:00:00-0400"; "2013-08-25T01:00:00-0400"; "2013-08-25T02:00:00-0400"; "2013-08-25T03:00:00-0400"; "2013-08-25T04:00:00-0400"; 现在是带时区的日期时间! 我已经用过类似的东西 df1 = DataFrame(pd.read_csv(PeriodC, sep=';', parse_dates=[0], index_col=0)) 但是结果是 2013-09-02 04:00:00 2013-09-03 04:00:00 2013-09-04 04:00:00 2013-09-05 04:00:00 2013-09-06 04:00:00 2013-09-07 04:00:00 2013-09-08 04:00:00 谁能解释我如何将日期时间与时区分开? 回答1 熊猫解析器将考虑时区信息(如果可用),并为您提供朴素的时间戳(朴素==无时区信息),但考虑了时区偏移。 为了将时区信息保留在DataFrame中,您应该首先将时间戳本地化为UTC ,然后将其转换为它们的时区(在本例中为Etc/GMT+4 ): >>> df = pd.read_csv(PeriodC, sep=';'
  • 无法在 Pandas 条形图中调整 x 轴 DateFormat(Unable to adjust x-axis DateFormat in pandas bar chart)
    问题 我想用 matplotlib 绘制一个熊猫时间序列对象data 。 对于简单的折线图data.plot() ,我能够使用ax.xaxis.set_major_formatter(md.DateFormatter('%Y-%m-%d %H:%M:%S')) 。 但是,我无法对条形图data.plot(kind='bar') 。 并且图表不会出现。 有没有办法更改熊猫条形图的数据格式? 我知道我可以使用 plt.bar 方法创建图表,但我需要使用 Pandas 堆积条形图来获取更复杂的数据。 import matplotlib.pyplot as plt import matplotlib.dates as md import numpy as np import pandas as pd import datetime as dt import time n=20 duration=1000 now=time.mktime(time.localtime()) timestamps=np.linspace(now,now+duration,n) dates=[dt.datetime.fromtimestamp(ts) for ts in timestamps] values=np.sin((timestamps-now)/duration*2*np.pi) data=pd
  • 熊猫条形图中的刻度标签重叠(Tick labels overlap in pandas bar chart)
    问题 TL;DR:在 Pandas 中,我如何绘制条形图,使其 x 轴刻度标签看起来像折线图的标签? 我制作了一个间隔均匀的时间序列(每天一个项目),并且可以像这样绘制它: intensity[350:450].plot() plt.show() 但是切换到条形图造成了这个混乱: intensity[350:450].plot(kind = 'bar') plt.show() 然后我直接使用 matplotlib 创建了一个条形图,但它缺少 Pandas 的漂亮日期时间序列刻度标签格式化程序: def bar_chart(series): fig, ax = plt.subplots(1) ax.bar(series.index, series) fig.autofmt_xdate() plt.show() bar_chart(intensity[350:450]) 这是强度系列的摘录: intensity[390:400] 2017-03-07 3 2017-03-08 0 2017-03-09 3 2017-03-10 0 2017-03-11 0 2017-03-12 0 2017-03-13 2 2017-03-14 0 2017-03-15 3 2017-03-16 0 Freq: D, dtype: int64 我可以全力以赴,完全手工创建刻度标签,但我宁愿不必婴儿
  • 更改熊猫图中的 xticks(Changing xticks in a pandas plot)
    问题 我试图在直方图中按小时绘制活跃用户数。 这是我的代码: import pandas as pd import datetime from matplotlib import pyplot as plt data = [datetime.datetime(2000, 1, 1, 11, 5, 44, 233144), datetime.datetime(2000, 1, 1, 12, 5, 45, 175807), ..] df = pd.DataFrame(data, columns=['Users']) df.index = pd.to_datetime(df['Users']) df.groupby(pd.TimeGrouper(freq='60Min')).count().plot(kind='bar', title = 'Activity by Hour', figsize = (10,8)) plt.xlabel('Time') plt.ylabel('Number of Users') plt.show() 这很好用,但我最初只获得了一天中的时间数据,而不是日期(我在 2000 年 1 月 1 日添加到每个条目中,因为我发现关于绘制这个使用过的datetimes和datetime.time格式的所有内容都不起作用;即除非您有datetime否则无法使用pf.to
  • 在大熊猫数据框中获取几年中平日某小时的平均值(Getting the average of a certain hour on weekdays over several years in a pandas dataframe)
    问题 几年来,我有一个小时格式的数据,格式如下: Date/Time Value 01.03.2010 00:00:00 60 01.03.2010 01:00:00 50 01.03.2010 02:00:00 52 01.03.2010 03:00:00 49 . . . 31.12.2013 23:00:00 77 我想对数据进行平均,这样我就可以获得每年的小时0,小时1 ...小时23的平均值。 所以输出看起来应该像这样: Year Hour Avg 2010 00 63 2010 01 55 2010 02 50 . . . 2013 22 71 2013 23 80 有人知道如何在大熊猫中获得吗? 回答1 注意:既然Series具有dt访问器,那么尽管日期/时间仍需要是datetime64,但日期作为索引已经不那么重要了。 更新:您可以更直接地进行分组,而不使用lambda: In [21]: df.groupby([df["Date/Time"].dt.year, df["Date/Time"].dt.hour]).mean() Out[21]: Value Date/Time Date/Time 2010 0 60 1 50 2 52 3 49 In [22]: res = df.groupby([df["Date/Time"].dt.year, df["Date
  • 熊猫条形图更改日期格式(Pandas bar plot changes date format)
    问题 我有一个简单的堆积线图,它具有使用以下代码时要神奇设置的日期格式。 df_ts = df.resample("W", how='max') df_ts.plot(figsize=(12,8), stacked=True) 但是,当绘制与条形图相同的数据时,日期会神秘地将其自身转换为丑陋且难以读取的格式。 df_ts = df.resample("W", how='max') df_ts.plot(kind='bar', figsize=(12,8), stacked=True) 原始数据进行了一些转换,以具有每周的最大值。 为什么自动设置日期发生这种根本性变化? 如何获得上面格式正确的日期? 这是一些虚拟数据 start = pd.to_datetime("1-1-2012") idx = pd.date_range(start, periods= 365).tolist() df=pd.DataFrame({'A':np.random.random(365), 'B':np.random.random(365)}) df.index = idx df_ts = df.resample('W', how= 'max') df_ts.plot(kind='bar', stacked=True) 回答1 绘图代码假定条形图中的每个条都应具有其自己的标签。
  • 从日期时间到可用值 Python(From date-time to usable value Python)
    问题 我需要制作一段时间内事件的直方图。 我的数据集以 ex 格式为我提供了每个事件的时间。 2013-09-03 17:34:04,我如何将其转换为我能够在 Python 直方图中绘制的内容? 我知道如何使用 datetime 和 time 命令反过来做。 顺便说一下,我的数据集包含 1.500.000 以上的数据点,所以请只使用可以通过循环或类似方法自动化的解决方案;) 回答1 要处理具有数百万个点的时间序列,您可以尝试使用 pandas: #!/usr/bin/env python from io import StringIO import matplotlib.pyplot as plt # $ pip install matplotlib import pandas as pd csv_file = StringIO(u"""time,A,B 2013-09-03 17:34:04,1,2 2013-09-03 17:34:05,3,4 2013-09-03 17:34:10,4,5 """) df = pd.read_csv(csv_file, parse_dates=True, index_col='time') df = df.cumsum() df.plot() plt.show() 回答2 使用time.strptime()将本地时间字符串转换为time
  • 从 DST 感知日期时间对象在 Dataframe 中创建 Pandas DatetimeIndex(Creating pandas DatetimeIndex in Dataframe from DST aware datetime objects)
    问题 我从在线 API 收集了一系列数据点,每个数据点都有一个值和一个 ISO 时间戳。 不幸的是,我需要遍历它们,所以我将它们存储在一个临时dict ,然后从中创建一个 Pandas 数据帧并将索引设置为时间戳列(简化示例): from datetime import datetime import pandas input_data = [ '2019-09-16T06:44:01+02:00', '2019-11-11T09:13:01+01:00', ] data = [] for timestamp in input_data: _date = datetime.fromisoformat(timestamp) data.append({'time': _date}) pd_data = pandas.DataFrame(data).set_index('time') 只要所有时间戳都在同一时区并且DST/非 DST 一切正常,并且,我会得到一个带有DatetimeIndex的 Dataframe,我可以稍后处理它。 但是,一旦两个不同的时间偏移出现在一个数据集中(上例),我只会在我的数据框中得到一个Index ,它不支持任何基于时间的方法。 有没有办法让熊猫接受时区感知,不同的日期作为索引? 回答1 Pandas datetime列也要求偏移量相同。
  • Seaborn 线图意外行为(Seaborn lineplot unexpected behaviour)
    问题 我希望了解为什么会出现以下 Seaborn 线图行为。 峰值出现在整个时间序列中,并且附加数据已添加到实际数据的左侧。 如何在 Seaborn 中防止这种意外行为? 常规数据图: import pandas as pd from matplotlib import pyplot as plt import seaborn as sns aussie_property[['Sydney(SYDD)']].plot(); Seaborn 数据图: sns.lineplot(data=aussie_property, x='date', y='Sydney(SYDD)'); 回答1 这不是一个seaborn问题,而是一个模糊日期时间的问题。 使用以下代码将date转换为date对象: aussie_property['date'] = pd.to_datetime(aussie_property['Date'], dayfirst=True) 然后你得到了你期望的 seaborn 情节 通常,建议在日期时间转换期间提供格式,例如, aussie_property['date'] = pd.to_datetime(aussie_property['Date'], format="%d/%m/%Y") 因为,正如我们在这里看到的,像10/12/2020这样的日期是不明确的。 因此
  • 从熊猫中的日期和时间变量中删除时间?(removing time from date&time variable in pandas?)
    问题 我有一个包含300k条带有日期的记录的变量,日期看起来像 2015-02-21 12:08:51 从那一天起,我想节省时间 日期变量的类型是pandas.core.series.series 这是我尝试的方式 from datetime import datetime,date date_str = textdata['vfreceiveddate'] format_string = "%Y-%m-%d" then = datetime.strftime(date_str,format_string) 一些随机错误 在上面的代码中,textdata是我的数据集名称,而vfreceived date是一个由日期组成的变量我如何编写代码以从datetime中删除时间。 回答1 假设所有日期时间字符串都采用类似的格式,则只需使用to_datetime将它们转换为日期时间,然后调用dt.date属性即可获取日期部分: In [37]: df = pd.DataFrame({'date':['2015-02-21 12:08:51']}) df Out[37]: date 0 2015-02-21 12:08:51 In [39]: df['date'] = pd.to_datetime(df['date']).dt.date df Out[39]: date 0 2015-02-21
  • 在大熊猫数据框中查找连续天数(Finding consecutive days in the pandas dataframe)
    问题 我有一个数据框: ColA ColB 0 A 1/2/2020 1 A 1/3/2020 2 A 1/4/2020 3 A 1/10/2020 4 B 1/3/2020 5 B 1/19/2020 6 C 1/2/2020 7 C 1/7/2020 8 D 1/8/2020 现在我想找出colA中连续三天的系列名称colB 。 输出: 答案是A ,因为它有1/2/2020 , 1/3/2020和1/4/2020在colB 。 回答1 一般的方法是这样的: # 1. To make sure the dates are sorted df = df.sort_values(["ColA", "ColB"]) # 2. Standardize the dates by offseting them df["ColB_std"] = df["ColB"] - pd.to_timedelta(range(df.shape[0]), 'day') # 3. Counting each instance of ColA and standardized date s = df.groupby(["ColA", "ColB_std"])["ColB_std"].count() # 4. Getting elements from ColA that have at least 1
  • 熊猫:将多个时间序列DataFrame绘制到单个图中(Pandas: plot multiple time series DataFrame into a single plot)
    问题 我有以下熊猫DataFrame: time Group blocks 0 1 A 4 1 2 A 7 2 3 A 12 3 4 A 17 4 5 A 21 5 6 A 26 6 7 A 33 7 8 A 39 8 9 A 48 9 10 A 59 .... .... .... 36 35 A 231 37 1 B 1 38 2 B 1.5 39 3 B 3 40 4 B 5 41 5 B 6 .... .... .... 911 35 Z 349 这是一个具有多个时间序列ques数据的数据帧,范围从min=1到max=35 。 每个Group都有这样的时间序列。 我想在1到35的x轴上绘制从A到Z的每个时间序列。y轴是每次的blocks 。 我当时正在考虑使用类似安德鲁斯曲线图的方法,该方法可以将每个系列相互绘制。 每个“色相”将设置为不同的组。 (欢迎提出其他建议。) 我的问题:如何格式化此数据框以绘制多个序列? 列应为GroupA , GroupB等吗? 如何获取数据框的格式为: time GroupA blocksA GroupsB blocksB GroupsC blocksC.... 如图所示,这是安德鲁斯绘图的正确格式吗? 编辑 如果我尝试: df.groupby('Group').plot(legend=False) x轴是完全不正确的。
  • 如何获取转换后的 Windows 应用商店 UWP 应用程序的故障转储(或任何可用的故障报告)?(How to get a crash dump (or any usable crash report) for a converted Windows Store UWP app?)
    问题 我向 Windows 10 商店提交了我的native Win32 应用程序,该应用程序已使用Project Centennial转换器转换为 UWP 应用程序。 该应用程序通过了商店认证,可通过私人链接获得(我正在测试它。) 在运行我的测试时,应用程序挂断并崩溃了一次。 所以我试图检索任何可用的故障转储来诊断问题。 我登录到 Windows Dev 帐户,然后转到我的Dashboard ,果然该应用程序显示了一次崩溃: 然后我点击了它。 新的Health页面显示了崩溃发生的时间、市场等。(那些无助于我调试问题的东西。) 然后在底部我看到了这个: 我点击了上面MOAPPLICATION_HANG_的蓝色链接,它打开了Failure details窗口。 然后,如果我一直向下滚动(点击图表的过去日期和时间),我会看到: 好的。 堆栈跟踪并不完全符合我的预期,但我会看一下。 所以如果我点击stack trace ,我会弹出这个: 然后,如果我点击下载,我会得到一个很小的文本文件stackTrace.tsv (117 字节),里面确实有这个: 有没有办法检索我可以在 Visual Studio C++ 项目中使用的功能性小型转储 .dmp 文件,以使用native调试器分析此崩溃? 回答1 编辑:我想指出以下内容似乎不再适用于更新的 Windows 应用商店。 现在,如果您转到
  • 日期时间转换-如何提取推断的格式?(Datetime conversion - How to extract the inferred format?)
    问题 这是日期时间值的数组: array = np.array(['2016-05-01T00:00:59.3+10:00', '2016-05-01T00:02:59.4+10:00', '2016-05-01T00:03:59.4+10:00', '2016-05-01T00:13:00.1+10:00', '2016-05-01T00:22:00.5+10:00', '2016-05-01T00:31:01.1+10:00'], dtype=object) pd.to_datetime非常擅长推断日期时间格式。 array = pd.to_datetime(array) print(array) DatetimeIndex(['2016-04-30 14:00:59.300000', '2016-04-30 14:02:59.400000', '2016-04-30 14:03:59.400000', '2016-04-30 14:13:00.100000', '2016-04-30 14:22:00.500000', '2016-04-30 14:31:01.100000'], dtype='datetime64[ns]', freq=None) 如何动态找出pd.to_datetime推断的日期时间格式? 类似于: %Y-%m-%dT... (对不起,我的datetime
  • python pandas时间序列图,如何在ts.plot()之外设置xlim和xticks?(python pandas timeseries plots, how to set xlim and xticks outside ts.plot()?)
    问题 fig = plt.figure() ax = fig.gca() ts.plot(ax=ax) 我知道我可以在熊猫绘图例程ts.plot(xlim = ...)中设置xlim,但是在熊猫绘图完成后如何更改它? ax.set_xlim(( t0.toordinal(), t1.toordinal() ) 有时可以正常工作,但是如果熊猫将xaxis格式设置为从纪元开始数月而不是几天,那么这将很难失败。 无论如何,我们是否知道熊猫如何将日期转换为xaxis,然后以相同的方式转换我的xlim? 谢谢。 回答1 如果我使用pd.Timestamp值设置x轴限制,则对我有效(使用熊猫0.16.2)。 例子: import pandas as pd # Create a random time series with values over 100 days # starting from 1st March. N = 100 dates = pd.date_range(start='2015-03-01', periods=N, freq='D') ts = pd.DataFrame({'date': dates, 'values': np.random.randn(N)}).set_index('date') # Create the plot and adjust x/y
  • 如何获取pandas.read_csv()从CSV文件列中推断日期时间和时间增量类型?(How to get pandas.read_csv() to infer datetime and timedelta types from CSV file columns?)
    问题 pandas.read_csv()可以推断列的类型,但是我无法为值似乎很明显的datetime和time delta的列推断任何datetime或timedelta类型(例如datetime64 , timedelta64 )。 这是一个示例CSV文件: datetime,timedelta,integer,number,boolean,string 20111230 00:00:00,one hour,10,1.6,True,Foobar 还有一些用熊猫阅读的代码: dataframe = pandas.read_csv(path) 该数据帧上的列的类型以对象,对象,整数,浮点数,布尔值,对象的形式出现。 除了前两列(我希望将其设置为datetime和timedelta)之外,它们都与我期望的一样。 是否有可能让熊猫自动检测datetime和timedelta列? (我不想告诉熊猫哪些列是日期时间和时间增量,也不必告诉它格式,我希望它尝试像对into,float和bool列所做的那样自动检测它们。) 回答1 您可以做的一件事是使用strptime定义日期解析器,这将处理您的日期格式,但这不是自动的: In [59]: import pandas as pd import datetime as dt def parse_dates(x): return dt