Python 在列中分隔数字和日期

Python 在列中分隔数字和日期,python,string,pandas,split,Python,String,Pandas,Split,我在pandas中有一列,包含100行,如下所示: timeseries 2000-05-01 10:00:00+00:00 0.9 这只是索引,我想用数字分隔datetime,有两列,如: time number 2000-05-01 10:00:00+00:00 0.9 我试过: df['start'] = mydata.str.split(' ').st

我在pandas中有一列,包含100行,如下所示:

timeseries

2000-05-01 10:00:00+00:00   0.9 
这只是索引,我想用数字分隔datetime,有两列,如:

time                                        number

2000-05-01 10:00:00+00:00                    0.9    
我试过:

df['start'] = mydata.str.split(' ').str.get(0)
df['end'] =   mydata.str.split(' ').str.get(1)    
但答案是:

                         timeseries     start  end
2017-05-01 10:00:00+00:00   0.9          0.9    NaN

如何将索引分隔为日期列和数字列?

如果序列包含字符串:

ser = pd.Series(['2000-05-01 10:00:00+00:00   0.9 ', '2000-05-01 10:00:00+00:00   1.2 ']) # some example data
那你就可以了

ser_split = ser.str.split().str
df['time'] = ser_split[0] + ' ' + ser_split[1]
df['number'] = ser_split[-1]

                        time number
0  2000-05-01 10:00:00+00:00    0.9
1  2000-05-01 10:00:00+00:00    1.2

在您发布的示例中,时间和数字部分之间有三个空格。那么,

df[['timeseries', 'number']] = df.timeseries.str.extract('(.*)\s{3}(.*)')
如果你知道时间和数字之间有两个或两个以上的空格

df[['timeseries', 'number']] = df.timeseries.str.extract('(.*)\s\s+(.*)')
对于更一般的情况

df['number'] = df.timeseries.str.split('\s+').str[-1]
df['timeseries'] = df.timeseries.str.split('\s+').str[:-1].apply(' '.join)
无论你遇到什么情况

    timeseries                  number
0   2000-05-01 10:00:00+00:00   0.9

df.timeseries.str.rsplit(“”,1,True)
?时间和数字部分之间有多少空格?它们被一些空格隔开,我不知道确切的数字是多少。我的数据是浮动的,我在实现代码之前尝试了df.apply(str),但没有成功!!!我不确定我是否理解你的评论。我假设您的
timeseries
是一个字符串。分割列并创建数据帧
df
后,这两列都是字符串。现在,您可以使用
pd.to_datetime(df.time)
time
转换为datetime格式,使用
df['number']将
number
转换为float格式。astype(float)