【发布时间】:2015-03-26 07:26:06
【问题描述】:
我有一个包含如下条目的 csv 文件:
1,2014 1 1 0 1,5
2,2014 1 1 0 1,5
3,2014 1 1 0 1,5
4,2014 1 1 0 1,6
5,2014 1 1 0 1,6
6,2014 1 1 0 1,12
7,2014 1 1 0 1,17
8,2014 5 7 1 5,4
第一列是 ID,第二列是到达日期(最后输入示例:5 月 7 日凌晨 1:05),最后一列是工作持续时间(以分钟为单位)。
其实我是用 pandas 和下面的函数读入数据的:
import pandas as pd
def convert_data(csv_path):
store = pd.HDFStore(data_file)
print('Loading CSV File')
df = pd.read_csv(csv_path, parse_dates=True)
print('CSV File Loaded, Converting Dates/Times')
df['Arrival_time'] = map(convert_time, df['Arrival_time'])
df['Rel_time'] = (df['Arrival_time'] - REF.timestamp)/60.0
print('Conversion Complete')
store['orders'] = df
我的问题是:如何根据条目的持续时间对条目进行排序,但考虑到到达日期?所以,我想根据“到达日期+持续时间”对 csv 条目进行排序。这怎么可能?
感谢您的任何提示!最好的问候,斯坦。
【问题讨论】:
-
不要使用
from_csv,它不再维护,使用read_csv,你不需要使用你的方法转换时间只需将parse_dates=True传递给read_csv,如果dtypes是现在 datetimes 然后你可以添加它们然后使用它进行排序,你可以使用 timedelta 添加分钟 -
好的,我同意这一点:pd.read_csv(csv_path, parse_dates=True) 但我不明白如何添加日期时间:S
-
你应该可以做类似
df['Arrival_date'] = df['Arrival_time'] + df['Duration'].apply(lambda x: datetime.timedelta(minutes=x)