Python 在列中分隔数字和日期
我在pandas中有一列,包含100行,如下所示: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
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)