当前位置: 首页 > 面试题库 >

熊猫:直接从“日期时间”列返回时间

甄华清
2023-03-14
问题内容

假设我有一个sales时间戳值的DataFrame :

timestamp               sales_office
2014-01-01 09:01:00     Cincinnati
2014-01-01 09:11:00     San Francisco
2014-01-01 15:22:00     Chicago
2014-01-01 19:01:00     Chicago

我想创建一个新列time_hour。我可以通过编写一个简短的函数并使用apply()它来迭代地创建它来创建它:

def hr_func(ts):
    return ts.hour

sales['time_hour'] = sales['timestamp'].apply(hr_func)

然后,我将看到以下结果:

timestamp               sales_office         time_hour
2014-01-01 09:01:00     Cincinnati           9
2014-01-01 09:11:00     San Francisco        9
2014-01-01 15:22:00     Chicago              15
2014-01-01 19:01:00     Chicago              19

什么我 实现的是这样一些较短的转变(我知道是错误的,但在精神得到):

sales['time_hour'] = sales['timestamp'].hour

显然,该列是类型的Series,因此没有这些属性,但是似乎有一种使用矩阵运算的简单方法。

有更直接的方法吗?


问题答案:

假设时间戳是数据帧的索引,则可以执行以下操作:

hours = sales.index.hour

如果要将其添加到销售数据框中,请执行以下操作:

import pandas as pd
pd.concat([sales, pd.DataFrame(hours, index=sales.index)], axis = 1)

编辑:如果您有几列日期时间对象,则是相同的过程。如果数据框中有[‘date’]列,并且假设’date’具有datetime值,则可以按以下方式访问’date’中的小时:

hours = sales['date'].hour

Edit2:如果要调整数据框中的列,则必须包括dt

sales['datehour'] = sales['date'].dt.hour


 类似资料:
  • 问题内容: 我有一个datetime列,如下所示- 现在,我想从此列的每一行中减去一年。我怎样才能达到相同的目标?我可以使用哪个库? 预期字段- 谢谢。 问题答案: 您可以用来实现以下目的:

  • 问题内容: 考虑到python中的pandas数据帧具有名为integer类型的列,我可以使用以下指令将其转换为格式。 因此,该列现在具有以下条目:。 将字符串恢复为整数时间戳值(代表从过去的秒数)的命令是什么? 我检查了但找不到转换实用程序,因此无法使用它。 此转换有实用程序吗? 问题答案: 您可以使用类型转换为int并将其除以以获取unix纪元开始的秒数。

  • 问题内容: 在pandas数据框中有一个datetime列,其值如下: 我想知道如何舍入这些值,摆脱毫秒,仅将日期,小时,分钟和00表示为秒,如下所示: 问题答案: 使用与用于分钟设置: 我想将时间值更改为下一个值:

  • 问题内容: 我有一个包含300k条带有日期的记录的变量,并且该日期看起来像是该日期的 2015-02-21 12:08:51 我想删除时间 日期变量的类型是pandas.core.series.series 这是我尝试的方式 一些随机错误 在上面的代码中,textdata是我的数据集名称,而vfreceived date是一个由日期组成的变量。 如何编写代码以从datetime中删除时间。 问题答

  • 问题内容: 我有一个包含表的MySQL数据库。 但是,我找不到在Java中将其作为Java中某种对象返回的方法。 我可以打电话给它,它会返回,但这并不好,因为没有办法比较字符串上的日期等。 我也可以打电话,但这根本不返回时间。 问题答案: 您需要使用Thomas的注释中建议的getTime()或getTimestamp()方法。举个例子… 说出要查询的表格,如下所示: 您可以这样做: 如果要使用J

  • 问题内容: 我有一个熊猫DataFrame ,。它包含一列“大小”,以字节为单位表示大小。我已经使用以下代码计算了KB,MB和GB: 我已经运行了超过120,000行,并且根据%timeit,每列花费的时间约为2.97秒* 3 =〜9秒。 无论如何,我可以使它更快吗?例如,我是否可以代替一次套用并运行3次而不是一次返回一列,而是可以一次通过返回所有三列以将其插入回原始数据帧吗? 我发现的其他问题都