我有一个CSV文件,该文件的列的值如下:
10/23/2018 11:00:00 PM
我想严格按时间转换这些值,并创建一个新列,该列采用条目的 time (11:00:00等)并将其更改为一个小时的结束时间。>
示例如下:
11:00:00 PM to 12:00:00 AM = 24, 12:00:00 AM to 1:00:00 AM = 1, 1:00:00 AM to 2:00:00 AM = 2 .....etc
寻找一种简单的方法来计算这些费用,方法是根据此转换为它们建立索引。
我的第一个伪代码想法是像抓取df ['Date']列并找出时间是什么一样:
file = pd.read_csv()
def conv(n):
date_time = n.iloc[1,1] #Position of the date-time column in file
for i in date_time:
time = date_time[11:] #Point of the line where time begins
不确定如何进行。
答案 0 :(得分:1)
您应将datetime
转换为pd.to_datetime(df.your_col)
(您的格式将自动正确解析,尽管您可以指定格式以提高速度),然后可以使用.dt.hour
访问器
import pandas as pd
# Sample Data
df = pd.DataFrame({'date': pd.date_range('2018-01-01', '2018-01-03', freq='30min')})
df['hour'] = df.date.dt.hour+1
print(df.sample(20))
date hour
95 2018-01-02 23:30:00 24
66 2018-01-02 09:00:00 10
82 2018-01-02 17:00:00 18
80 2018-01-02 16:00:00 17
75 2018-01-02 13:30:00 14
83 2018-01-02 17:30:00 18
49 2018-01-02 00:30:00 1
47 2018-01-01 23:30:00 24
30 2018-01-01 15:00:00 16
52 2018-01-02 02:00:00 3
29 2018-01-01 14:30:00 15
86 2018-01-02 19:00:00 20
59 2018-01-02 05:30:00 6
65 2018-01-02 08:30:00 9
92 2018-01-02 22:00:00 23
8 2018-01-01 04:00:00 5
91 2018-01-02 21:30:00 22
10 2018-01-01 05:00:00 6
89 2018-01-02 20:30:00 21
51 2018-01-02 01:30:00 2
答案 1 :(得分:1)
您也可以这样做:
import pandas as pd
data ='''
10/23/2018 11:00:00 PM
10/23/2018 12:00:00 AM
'''.strip().split('\n')
df = pd.DataFrame(data, columns=['date'])
df['date'] = pd.to_datetime(df['date'])
#df['pad1hour'] = df['date'].dt.hour+1
#or
df['pad1hour'] = df['date'] + pd.Timedelta('1 hours')
# I prefer the second as you can add whatever interval e.g. '1 days 3 minutes'
print(df['pad1hour'].dt.time)
答案 2 :(得分:0)
这是最好的方法:
from datetime import timedelta
import pandas as pd
file = pd.read_csv()
file['New datetime'] = file['Date_time'].apply(lambda x: pd.to_datetime(x) + timedelta(hours = 1))
file['New time'] = file['Date_time'].apply(lambda x: (pd.to_datetime(x) + timedelta(hours = 1)).time())
如果您需要将列的数据类型作为字符串而不是时间戳记,则可以执行以下操作:
file['New time'] = file['New time'].astype(str)
将其转换为可读的字符串。
希望有帮助。