![](/img/trans.png)
[英]Python: how to separate time records(e.g. 2015-02-01 12:34:22) in to two different arrays
[英](Python) How can I split a column with both date and time (e.g. 2019-07-02 00:12:32 UTC) into two separate columns?
我有一个包含8列和40,000行的表,下表(DF700)是整个表的一小部分。 我需要拆分“ sdk_ts”列,以便将日期和时间分开,并从所有行中删除“ UTC”。
sdk_ts y z
0 2019-07-02 00:12:32 UTC 3.455 4.555
1 2019-07-02 00:12:32 UTC 4.567 6.897
2 2019-07-02 00:12:32 UTC 9.304 0.440 : : :
3 2019-07-02 00:12:59.6 UTC 8.909 0.405
4 2019-07-02 00:12:34.789 UTC 10.30 2.344
:
:
我尝试了以下代码:
DF800 = DF700['sdk_ts'].str.split(n=1, expand=True)
但是,结果是:
0 1
0 2019-07-02 00:12:32 UTC
1 2019-07-02 00:12:32 UTC
2 2019-07-02 00:12:32 UTC
3 2019-07-02 00:12:59.6 UTC
4 2019-07-02 00:12:34.789 UTC
5 2019-07-02 00:12:35.048 UTC
有没有其他方法可以实现我的目标? 拆分日期和时间,在所有行中删除“ UTC”,并确保其他列仍在表中。
我建议将“ sdk_ts”列转换为日期时间格式,以便您可以轻松地从中提取日期和时间。
这是代码:
df['sdk_ts'] = pd.to_datetime(df['sdk_ts'])
df['date'] = df['sdk_ts'].dt.date
df['time'] = df['sdk_ts'].dt.time
只需在分割之前使用strip(' UTC')
摆脱它,就像这样:
DF800 = DF700['sdk_ts'].str.strip(' UTC').str.split(n=1, expand=True)
完整示例:
import pandas as pd
from io import StringIO
DF700 = pd.read_csv(StringIO("""
sdk_ts y z
0 2019-07-02 00:12:32 UTC 3.455 4.555
1 2019-07-02 00:12:32 UTC 4.567 6.897
2 2019-07-02 00:12:32 UTC 9.304 0.440
3 2019-07-02 00:12:59.6 UTC 8.909 0.405
4 2019-07-02 00:12:34.789 UTC 10.30 2.344"""), sep="\s\s+")
DF800 = DF700['sdk_ts'].str.strip(' UTC').str.split(n=1, expand=True)
print(DF800)
输出:
0 1
0 2019-07-02 00:12:32
1 2019-07-02 00:12:32
2 2019-07-02 00:12:32
3 2019-07-02 00:12:59.6
4 2019-07-02 00:12:34.789
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.