设置
我有一个包含化学同位素符号的列'iso'的pandas
数据框,例如 '4He'、'16O'、'197Au'。 我想使用matplotlib
中的annotate()
函数将许多(但不是全部)同位素标记在图上。 标签格式应该带有上标的原子质量。 我可以用LaTeX样式格式化来做到这一点:
axis.annotate('$^{4}$He', xy=(x, y), xycoords='data')
我可以为每个我想标记的同位素编写几十个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')
我想,我可以使用字符串方法来解决这个问题。但是我一直在尝试使用和以及一些不同的模式,但无法获得所需的效果。
iso
列。它将为split
返回的每个标记创建一列。您能提供要拆分的数据和匹配模式的示例吗?df = pd.DataFrame('part1_part2', index=range(0,3), columns=['iso']) df['iso'].str.split('_', expand=True)
。 - Romainregexp
分割字符串,检查我的答案。 - Romain