我想注册我的 dt0 列,该列的格式为“1/1/2020 12:00:00 PM”,并在 python 中使用“to_datetime”每 0.1 秒递增一次。
我尝试了以下操作,但出现错误“越界纳秒时间戳:1-01-01 00:00:00”。
df.dt0=pd.to_datetime(df.dt0)
是不是因为我的间隔太小了?有人可以推荐更好/有效的解决方案吗。
这是我想从表格中转换的列
没有 | 日期 | 时间 |
---|---|---|
1 | 1/15/2020 | 下午 12:00:00 |
2 | 1/15/2020 | 下午 12:00:00 |
3 | 1/15/2020 | 下午 12:00:00 |
4 | 1/15/2020 | 下午 12:00:00 |
5 | 1/15/2020 | 下午 12:00:00 |
6 | 1/15/2020 | 下午 12:00:00 |
7 | 1/15/2020 | 下午 12:00:00 |
8 | 1/15/2020 | 下午 12:00:00 |
9 | 1/15/2020 | 下午 12:00:00 |
10 | 1/15/2020 | 下午 12:00:00 |
11 | 1/15/2020 | 下午 12:00:00 |
12 | 1/15/2020 | 下午 12:00:00 |
答案 0 :(得分:0)
首先将连接的两列转换为日期时间:
df['datetime'] = pd.to_datetime(df['Date'] + ' ' + df['Time'],
format='%m/%d/%Y %I:%M:%S %p')
print (df)
No. Date Time datetime
0 1 1/15/2020 12:00:00 PM 2020-01-15 12:00:00
1 2 1/15/2020 12:00:00 PM 2020-01-15 12:00:00
2 3 1/15/2020 12:00:00 PM 2020-01-15 12:00:00
3 4 1/15/2020 12:00:00 PM 2020-01-15 12:00:00
4 5 1/15/2020 12:00:00 PM 2020-01-15 12:00:00
5 6 1/15/2020 12:00:00 PM 2020-01-15 12:00:00
6 7 1/15/2020 12:00:00 PM 2020-01-15 12:00:00
7 8 1/15/2020 12:00:00 PM 2020-01-15 12:00:00
8 9 1/15/2020 12:00:00 PM 2020-01-15 12:00:00
9 10 1/15/2020 12:00:00 PM 2020-01-15 12:00:00
10 11 1/15/2020 12:00:00 PM 2020-01-15 12:00:00
11 12 1/15/2020 12:00:00 PM 2020-01-15 12:00:00
然后添加重复 datetime
的计数器与 GroupBy.cumcount
乘以 100
并通过 to_timedelta
转换为时间增量:
df['datetime'] += pd.to_timedelta(df.groupby('datetime').cumcount().mul(100), unit='ms')
print (df)
No. Date Time datetime
0 1 1/15/2020 12:00:00 PM 2020-01-15 12:00:00.000
1 2 1/15/2020 12:00:00 PM 2020-01-15 12:00:00.100
2 3 1/15/2020 12:00:00 PM 2020-01-15 12:00:00.200
3 4 1/15/2020 12:00:00 PM 2020-01-15 12:00:00.300
4 5 1/15/2020 12:00:00 PM 2020-01-15 12:00:00.400
5 6 1/15/2020 12:00:00 PM 2020-01-15 12:00:00.500
6 7 1/15/2020 12:00:00 PM 2020-01-15 12:00:00.600
7 8 1/15/2020 12:00:00 PM 2020-01-15 12:00:00.700
8 9 1/15/2020 12:00:00 PM 2020-01-15 12:00:00.800
9 10 1/15/2020 12:00:00 PM 2020-01-15 12:00:00.900
10 11 1/15/2020 12:00:00 PM 2020-01-15 12:00:01.000
11 12 1/15/2020 12:00:00 PM 2020-01-15 12:00:01.100
答案 1 :(得分:0)
为了让您的目标使用以下行
df['dt0'] = df.apply(lambda x : pd.to_datetime(x.Date+' '+x.Time),axis=1)
验证:
df
Date Time dt0
No.
1 1/15/2020 12:00:00 PM 2020-01-15 12:00:00
2 1/15/2020 12:00:00 PM 2020-01-15 12:00:00
3 1/15/2020 12:00:00 PM 2020-01-15 12:00:00
4 1/15/2020 12:00:00 PM 2020-01-15 12:00:00
5 1/15/2020 12:00:00 PM 2020-01-15 12:00:00
6 1/15/2020 12:00:00 PM 2020-01-15 12:00:00
7 1/15/2020 12:00:00 PM 2020-01-15 12:00:00
8 1/15/2020 12:00:00 PM 2020-01-15 12:00:00
9 1/15/2020 12:00:00 PM 2020-01-15 12:00:00
10 1/15/2020 12:00:00 PM 2020-01-15 12:00:00
11 1/15/2020 12:00:00 PM 2020-01-15 12:00:00
12 1/15/2020 12:00:00 PM 2020-01-15 12:00:00
df.info()
df.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 12 entries, 1 to 12
Data columns (total 3 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Date 12 non-null object
1 Time 12 non-null object
2 dt0 12 non-null datetime64[ns]
dtypes: datetime64[ns](1), object(2)
memory usage: 384.0+ bytes
如所见,dt0
是 datetime64[ns]