我有这样的数据帧:
>>> df1
overall
0 class1-10/class2-11/class3-13
1 class3-31/class2-22/class1-23
2 abc/def/xyz/prq
我想计算3列class1,class2&如果在’整体’中找到它们,则为class3.
期望的o / p
overall class1 class2 class3
0 class1-10/class2-11/class3-13 10 11 13
1 class3-31/class2-22/class1-23 23 22 32
2 abc/def/xyz/prq NaN NaN NaN
如何以pythonaic方式做到这一点?
谢谢
解决方法:
没有正则表达式的一种方法是使用try / except:
def splitter(x):
try:
return [int(i.split('-')[1]) for i in sorted(x.split('/'))]
except IndexError:
return [np.nan] * 3
df[['class1', 'class2', 'class3']] = df['overall'].apply(splitter).apply(pd.Series)
print(df)
overall class1 class2 class3
0 class1-10/class2-11/class3-13 10.0 11.0 13.0
1 class3-31/class2-22/class1-23 23.0 22.0 31.0
2 abc/def/xyz/prq NaN NaN NaN
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。