使用 pandas 组合日期和时间列

2024-01-11

我有一个带有以下列的 pandas 数据框:

data = {'Date': ['01-06-2013', '02-06-2013', '02-06-2013', '02-06-2013', '02-06-2013', '03-06-2013', '03-06-2013', '03-06-2013', '03-06-2013', '04-06-2013'],
        'Time': ['23:00:00', '01:00:00', '21:00:00', '22:00:00', '23:00:00', '01:00:00', '21:00:00', '22:00:00', '23:00:00', '01:00:00']}
df = pd.DataFrame(data)

         Date      Time
0  01-06-2013  23:00:00
1  02-06-2013  01:00:00
2  02-06-2013  21:00:00
3  02-06-2013  22:00:00
4  02-06-2013  23:00:00
5  03-06-2013  01:00:00
6  03-06-2013  21:00:00
7  03-06-2013  22:00:00
8  03-06-2013  23:00:00
9  04-06-2013  01:00:00

如何组合 data['Date'] 和 data['Time'] 以获得以下结果?有没有办法使用pd.to_datetime?

Date
01-06-2013 23:00:00
02-06-2013 01:00:00
02-06-2013 21:00:00
02-06-2013 22:00:00
02-06-2013 23:00:00
03-06-2013 01:00:00
03-06-2013 21:00:00
03-06-2013 22:00:00
03-06-2013 23:00:00
04-06-2013 01:00:00

值得一提的是,您可能已经阅读过本文directly例如如果你正在使用read_csv https://pandas.pydata.org/docs/reference/api/pandas.read_csv.html using parse_dates=[['Date', 'Time']].

假设这些只是字符串,您可以简单地将它们添加在一起(用空格),从而允许您使用to_datetime https://pandas.pydata.org/docs/reference/api/pandas.to_datetime.html,无需指定即可工作format=范围

In [11]: df['Date'] + ' ' + df['Time']
Out[11]:
0    01-06-2013 23:00:00
1    02-06-2013 01:00:00
2    02-06-2013 21:00:00
3    02-06-2013 22:00:00
4    02-06-2013 23:00:00
5    03-06-2013 01:00:00
6    03-06-2013 21:00:00
7    03-06-2013 22:00:00
8    03-06-2013 23:00:00
9    04-06-2013 01:00:00
dtype: object

In [12]: pd.to_datetime(df['Date'] + ' ' + df['Time'])
Out[12]:
0   2013-01-06 23:00:00
1   2013-02-06 01:00:00
2   2013-02-06 21:00:00
3   2013-02-06 22:00:00
4   2013-02-06 23:00:00
5   2013-03-06 01:00:00
6   2013-03-06 21:00:00
7   2013-03-06 22:00:00
8   2013-03-06 23:00:00
9   2013-04-06 01:00:00
dtype: datetime64[ns]

或者,如果没有+ ' ',但是format=必须使用参数。此外,pandas 擅长推断要转换为的格式datetime但是,指定确切的格式会更快。

pd.to_datetime(df['Date'] + df['Time'], format='%m-%d-%Y%H:%M:%S')

注意:令人惊讶的是(对我来说),这对于将 NaN 转换为 NaT 来说效果很好,但值得担心的是转换(可能使用raise争论)。

%%timeit

# sample dataframe with 10000000 rows using df from the OP
df = pd.concat([df for _ in range(1000000)]).reset_index(drop=True)

%%timeit
pd.to_datetime(df['Date'] + ' ' + df['Time'])
[result]:
1.73 s ± 10.4 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

%%timeit
pd.to_datetime(df['Date'] + df['Time'], format='%m-%d-%Y%H:%M:%S')
[result]:
1.33 s ± 9.88 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 pandas 组合日期和时间列 的相关文章

随机推荐

  • Javascript 中用于异或门的简单感知器

    我尝试使用单个感知器来预测异或门 然而 结果似乎完全是随机的 我找不到错误 我在这里做错了什么 是我的训练方法不对吗 或者感知器模型中是否存在任何错误 或者单个感知器不能用于解决这个问题 class Perceptron construct
  • Android:如何将 imageView 设置为谷歌地图 API android 中的标记?

    到目前为止 我一直在使用可绘制对象来填充地图上的标记 现在我想知道如果我可以将自定义图像视图显示为地图中的标记 那会很酷 直到现在我都这样做 itemized new Itemazide drawable mContext 我想实现类似的目
  • 打开、拆分 iTerm2 窗口并在每个窗格中执行命令

    我正在尝试创建一个脚本来打开iTerm2窗口 将其垂直分成 3 个窗格 并在每个窗格中运行一些命令 到目前为止 这是我的尝试 tell application iTerm2 activate Create main window creat
  • 需要帮助调试旨在更新 Google 云端硬盘中数百个文件的 Google Apps 脚本代码

    我工作的公司刚刚更新了其品牌 影响了保存到共享 Google 云端硬盘的数百个 Excel 和 PowerPoint 文件 有一个团队正在努力更新文件 我的挑战是找到一种有效的方法来添加新文件并删除 Google 云端硬盘中的旧文件 我创建
  • 实现一个简单的 Dagger2 示例

    我是 Dagger2 的新手 我一直使用 Koin 我正在尝试实现一个简单的示例 但我真的不知道我缺少什么 这是我到目前为止所得到的 应用程序 gradle ext daggerVersion 2 23 2 implementation c
  • “插入”和“删除”表是否保证在 AFTER UPDATE 触发器中以相同的顺序返回其记录?

    如果我有一个 AFTER UPDATE 触发器 将会 SELECT FROM inserted and SELECT FROM deleted 按同样的顺序把他们的记录还给我吗 IE 假设我能够索引到他们的结果集 将 del 5 和 ins
  • 将 CSV 文件导入 C#

    我正在构建一个网站 要求之一是用户从电子邮件客户端导出联系人 然后将其导入到网站中 因为每个电子邮件客户端以稍微不同的格式导出他们的联系人 这让我摸不着头脑 必须找到处理它的最佳方法 因为我不知道字段是什么 也不知道分隔符是什么 我只想瞄准
  • 获取字体支持的字符 - 在 C# 中

    我有一个支持日语字符的第三方字体 我需要将其用于应用程序 每当该字体不支持某个字符时 就会绘制常见的矩形 默认字符 显然 并非所有日语字符都受支持 因为如果我尝试绘制翻译办公室给我们的翻译 就会发现有很多矩形 每当使用不支持的字符时 我都需
  • 如何将 JS 对象集合发送到 ASP.NET API 服务?

    我正在尝试将 JavaScript 对象集合发送到我的 API 服务 但服务器收到空对象列表
  • 如何同时部署两个 ClickOnce 版本?

    我希望能够为我的应用程序提供一个测试 ClickOnce 服务器 用户可以在其中并行运行生产版本和测试版本 这可能吗 我首先尝试使用以下内容AssemblyInfo cs并且还更改了 ClickOnce 部署中的名称 尽管所实现的所有这些都
  • 何时将 volatile 与寄存器/局部变量一起使用

    在 CUDA 中使用 volatile 限定符声明寄存器数组的含义是什么 当我尝试使用 volatile 关键字和寄存器数组时 它删除了溢出寄存器内存到本地内存的数量 即强制 CUDA 使用寄存器而不是本地内存 这是预期的行为吗 我在 CU
  • 访问 BeanFactoryPostProcessor 中的属性

    我正在尝试创建一些东西 它将根据可配置的属性自动创建bean 来自application yml等 因为我不能像通常那样访问属性组件BeanFactoryPostProcessor 我有点困惑如何访问它们 如何访问应用程序属性BeanFac
  • 如何在 .NET 交互式笔记本中绘制图像(C#、VS Code)

    我正在尝试使用 C 在 NET 交互式笔记本中绘制简单的图形 有点像 Dr Racket 的 C 版本 到目前为止我见过的最简单的事情是using System Drawing SFML NET Raylib cs 也可以工作 但它们会打开
  • Python 中的 NoSql 注入

    当试图提出这个问题时 我得到了this one https stackoverflow com questions 4167077 mongodb injection它使用的是Java 并且在答案中给出了一个Ruby示例 并且似乎只有在使用
  • Vaadin 通过单击按钮重定向到 URL

    我已经搜索了很长时间 但我确实无法弄清楚这一点 如何将用户重定向到新的外部链接 例如www google com 当他们点击 Vaadin 中的按钮时 到目前为止我唯一能做的就是将链接放入链接中 Link link new Link lin
  • 如何构建没有版本后缀的ffmpeg共享库

    有没有一种方法可以配置为Android构建没有版本号后缀的ffmpeg共享库 我能够使用不同的选项进行构建 但总是得到像 libavcodec so 57 这样的文件 我需要没有后缀的库 例如 libavcodec so 我认为选项 dis
  • 为什么 UDP 在其数据包中有两次“UDP 长度”字段?

    为什么 UDP 在其数据包中有两次 UDP 长度 字段 这不是多余的吗 如果需要进行某种错误检查 请提供示例 你的观察是正确的 长度字段是多余的 因为IP头和UDP头都有长度字段 我对这种冗余原因的唯一猜测是 它发生是因为 UDP 是在当时
  • 部分 .csproj 文件

    是否可以将 csproj 中的信息拆分到多个文件中 有点像项目版本partial class特征 您不能拥有多个主 csproj 但因为 csproj 的底层接线是使用 msbuild 完成的 所以您可以简单地拥有多个相互导入的部分 csp
  • SwiftUI 列表在任何视图更改时重置滚动

    我有一个非常简单的列表 其中有一些部分 在同一视图中 我还有一个按钮 当选择任何列表项时 该按钮将被启用 这是由状态变量控制的 当发生这种情况时 如果列表向下滚动 状态变量将发生变化 以启用按钮 并且所有视图将刷新 导致我的列表滚动到顶部
  • 使用 pandas 组合日期和时间列

    我有一个带有以下列的 pandas 数据框 data Date 01 06 2013 02 06 2013 02 06 2013 02 06 2013 02 06 2013 03 06 2013 03 06 2013 03 06 2013