我的数据框的一列看起来像这样:
[application]
blah/3.14
xyz/5.2
abc
...
...
(代表软件/版本)
我正在努力实现这样的目标:
[application] [name] [ver]
blah/3.14 blah 3.14
xyz/5.2 xyz 5.2
abc abc na <-- this missing value can be filled in with a string too
...
...
正如您已经知道的,我想将列分成两部分,使用“/”作为分隔符。堆栈溢出解决方案建议如下:
tmptbl = pd.DataFrame(main_tbl.application.str.split('/', 1).tolist(), columns= ['name', 'ver'])
main_tbl['name'] = tmptbl.name
main_tbl['ver'] = tmptbl.ver
乍一看看起来不错,但对于没有“/”的列(例如“abc”)它会崩溃。
我还能尝试什么?
Use str.split http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.str.split.html带参数expand=True
退货DataFrame
:
main_tbl[['name','ver']] = main_tbl.application.str.split('/', expand=True)
print (main_tbl)
application name ver
0 blah/3.14 blah 3.14
1 xyz/5.2 xyz 5.2
2 abc abc None
并且如果需要的话NaN
s add replace http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.replace.html:
main_tbl.ver = main_tbl.ver.replace({None:np.nan})
print (main_tbl)
application name ver
0 blah/3.14 blah 3.14
1 xyz/5.2 xyz 5.2
2 abc abc NaN
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)