您可以使用它来创建数据框:
xyz = pd.DataFrame({'release' : ['7 June 2013', '2012', '31 January 2013',
'February 2008', '17 June 2014', '2013']})
我正在尝试拆分数据并使用此命令将它们保存到名为“日,月和年”的3列中:
dataframe[['day','month','year']] = dataframe['release'].str.rsplit(expand=True)
结果数据框是: dataframe
正如您所看到的,它在获得3个字符串时效果很好,但每当它获得少于3个字符串时,它会将数据保存在错误的位置。
我尝试过split和rsplit,两者都给出了相同的结果。 任何解决方案都可以在正确的位置获取数据?
最后一个是年份,它存在于每个条件中,它应该是第一个被保存的,然后是月份,如果它存在,否则什么都没有,并且应该存储日期。
答案 0 :(得分:2)
你可以
In [17]: dataframe[['year', 'month', 'day']] = dataframe['release'].apply(
lambda x: pd.Series(x.split()[::-1]))
In [18]: dataframe
Out[18]:
release year month day
0 7 June 2013 2013 June 7
1 2012 2012 NaN NaN
2 31 January 2013 2013 January 31
3 February 2008 2008 February NaN
4 17 June 2014 2014 June 17
5 2013 2013 NaN NaN
答案 1 :(得分:0)
尝试撤消结果。
dataframe[['year','month','day']] = dataframe['release'].str.rsplit(expand=True).reverse()