首页 > 解决方案 > 如何使用带有多重分隔符的 df.str.split() 来保留分隔符

问题描述

我一直在使用的数据框有一列指示带有时区的日期时间,例如:2019-01-23T04:30:00+01:00。

                    Horodate
0  2019-01-23T04:30:00+01:00
1  2019-01-23T04:30:00+01:00
2  2019-01-23T04:30:00+01:00
3  2019-01-23T04:30:00-01:00

我想获取时区信息并将其放入另一个名为“TimeZone”的列中。我可以通过应用这个函数来做到这一点:

df["TimeZone"] = "+"  + df["Horodate"].str.split('[+]').str[1] 

这很好用:

                    Horodate TimeZone
0  2019-01-23T04:30:00+01:00   +01:00
1  2019-01-23T04:30:00+01:00   +01:00
2  2019-01-23T04:30:00+01:00   +01:00
3  2019-01-23T04:30:00-01:00      NaN

但它仅对以“+”开头的时区有效。我想找到一种方法来提取有关时区的全部信息,包括信号“+”或“-”并获得一个看起来像这样的数据框:

                    Horodate TimeZone
0  2019-01-23T04:30:00+01:00   +01:00
1  2019-01-23T04:30:00+01:00   +01:00
2  2019-01-23T04:30:00+01:00   +01:00
3  2019-01-23T04:30:00-01:00   -01:00

我想我必须通过拆分多个分隔符,但问题是,如何在需要拆分字符串的同时包含分隔符?我可以像这样切片字符串得到一个很好的结果:

df_test["TimeZone"] =  df_test["Horodate"].str[19:] 

但这不是一种通用的方法。提前致谢。

标签: pythonstringpandassplit

解决方案


只是字符串切片怎么样?

In [285]: df["TimeZone"] = df["Horodate"].str[-6:] 

In [286]: df
Out[286]: 
                    Horodate TimeZone
0  2019-01-23T04:30:00+01:00   +01:00
1  2019-01-23T04:30:00+01:00   +01:00
2  2019-01-23T04:30:00+01:00   +01:00
3  2019-01-23T04:30:00-01:00   -01:00

推荐阅读