我正在尝试使用我现有的数据和时间数据来获取 Ts,看起来像
(Pdb) df[0][:7]
0 [Data & Time]
1 Jan 01 08:00:01.193
2 Jan 01 08:00:01.275
3 Jan 01 08:00:01.294
4 Jan 01 08:00:01.335
5 Jan 01 08:00:01.357
6 Jan 01 08:00:01.392
Name: 0, dtype: object
因此,使用上面的数据,我打算用 value 插入另一列“Ts”,例如 df[0][i] - df[0][i-1]
。
所以计划是
- 将数据分成两列
Jan 01 08:00:01.193
->01/01
08:00:01.193
- 插入新列“Ts”,总共构成 3 列。
我正在研究正则表达式来拆分列,但我想知道是否可以在不使用 for 循环的情况下访问和执行拆分所有数据?我对矢量化知之甚少,但我无法想象如何整合正则表达式......?
回答1
给定一个格式正确的 DataFrame:
timestamp
0 Jan 01 08:00:01.193
1 Jan 01 08:00:01.275
2 Jan 01 08:00:01.294
3 Jan 01 08:00:01.335
4 Jan 01 08:00:01.357
5 Jan 01 08:00:01.392
我们可以先将其转换为 datetime
:
df.timestamp = pd.to_datetime(df.timestamp, format='%b %d %H:%M:%S.%f')
然后创建两个新列:
df['day/month'] = df.timestamp.dt.strftime('%d/%m')
df['time'] = df.timestamp.dt.time
输出:
timestamp day/month time
0 1900-01-01 08:00:01.193 01/01 08:00:01.193000
1 1900-01-01 08:00:01.275 01/01 08:00:01.275000
2 1900-01-01 08:00:01.294 01/01 08:00:01.294000
3 1900-01-01 08:00:01.335 01/01 08:00:01.335000
4 1900-01-01 08:00:01.357 01/01 08:00:01.357000
5 1900-01-01 08:00:01.392 01/01 08:00:01.392000
编辑:
顺便说一句,这不是正则表达式。它们是https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes。