Pau*_* T. 4 python string pandas
我有一个pandas数据框,其中包含一列“ iso”,其中包含化学同位素符号,例如“ 4He”,“ 16O”,“ 197Au”。我想使用中的annotate()功能在图上标记很多(但不是全部)同位素matplotlib。标签格式应具有上标原子质量。我可以使用LaTeX样式格式来做到这一点:
axis.annotate('$^{4}$He', xy=(x, y), xycoords='data')
Run Code Online (Sandbox Code Playgroud)
annotate()对于要标记的每种同位素,我可以写出数十种上述语句,但我希望实现自动化。
如何从iso列中提取同位素编号和名称?
提取这些片段后,我就可以制作标签了。可以说我们将它们转储到变量Num和中Sym。现在,我可以遍历同位素并执行以下操作:
for i in list_of_isotopes:
(Num, Sym) = df[df.iso==i].iso.str.MISSING_STRING_METHOD(???)
axis.annotate('$^{%s}$%s' %(Num, Sym), xy=(x[Num], y[Num]), xycoords='data')
Run Code Online (Sandbox Code Playgroud)
大概有一个pandas字符串方法,我可以放在上面。但是我很难找到解决方案。我一直在尝试split()并extract()使用几种不同的模式,但无法获得理想的效果。
这是我使用的答案split。使用的正则表达式可以改进,我在这种情况下很不好:-)
df = pd.DataFrame({'iso': ['4He', '16O', '197Au']})
result = df['iso'].str.split('(\d+)([A-Za-z]+)', expand=True)
result = result.loc[:,[1,2]]
result.rename(columns={1:'x', 2:'y'}, inplace=True)
print(result)
Run Code Online (Sandbox Code Playgroud)
产生
x y
0 4 He
1 16 O
2 197 Au
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5249 次 |
| 最近记录: |