首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >修改带日偏移量的数据帧

修改带日偏移量的数据帧
EN

Stack Overflow用户
提问于 2019-05-10 11:51:41
回答 1查看 77关注 0票数 3

我正在处理一个非常大的数据帧。下面是一个小样本:

代码语言:javascript
运行
复制
import pandas as pd
df = pd.DataFrame({'nodes': ['A', 'B', 'C'],
                   'dept': ['20:00', '02:00', '21:00'],
                   'arrv': ['20:00', '17:00', '21:00'],
                   'dept_offset_day': [0, 1, 0],
                   'arrv_offset_day': [0, 1, 0],
'stop_num':[0,1,2]})
print(df)
 nodes   dept   arrv  dept_offset_day  arrv_offset_day
0     A  20:00  20:00                0                0
1     B  02:00  17:00                1                1
2     C  21:00  21:00                0                0

我正在尝试1)通过考虑日期偏移量在开始时间和结束时间中添加日期。2)将nodes列分解为两个nodes_start和nodes_end列,即点对点。类似于:

代码语言:javascript
运行
复制
nodes_start   nodes_end       start_datetime       end_datetime 
     A           B           2019-5-9 20:00           2019-5-10 02:00     
     B           C           2019-5-10 17:00          2019-5-10 21:00     

我尝试使用pd.offsets.Day()并遍历每一行,但这会使执行时间变得非常慢,并且我得到了错误的日期。谢谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2019-05-10 12:06:03

尝试用新的列构造一个新的数据框(实际上是复制的列:D):

代码语言:javascript
运行
复制
df2 = pd.DataFrame()
df2['nodes_start'] = df['nodes'][:2]
df2['nodes_end'] = df['nodes'][-2:].reset_index(drop=True)
df2['start_datetime'] = pd.to_datetime(df['arrv'][:2])
df2['end_datetime'] = pd.to_datetime(df['dept'][-2:].reset_index(drop=True))
df2['start_datetime'] = [df2['start_datetime'][0] - pd.Timedelta(days=1)] + [df2['start_datetime'][1]]
print(df2)

输出:

代码语言:javascript
运行
复制
  nodes_start nodes_end      start_datetime        end_datetime
0           A         B 2019-05-09 20:00:00 2019-05-10 02:00:00
1           B         C 2019-05-10 17:00:00 2019-05-10 21:00:00
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56070461

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档