(Python)如何将具有日期和时间(例如,UTC时间2019-07-02 00:12:32)的列拆分为两个单独的列?

时间:2019-07-16 10:12:00

标签: python

我有一个包含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”,并确保其他列仍在表中。

2 个答案:

答案 0 :(得分:1)

我建议将“ sdk_ts”列转换为日期时间格式,以便您可以轻松地从中提取日期和时间。

代码如下:

<select
  name="myselect"
>
<option *ngFor="let ls of data[0].list | keyvalue;let i = index" [value]="ls.key">
{{ ls.value}} {{i}}</option>
</select>

答案 1 :(得分:0)

只需使用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