我有一个pandas
数据框,其中包含一列“iso”,其中包含化学同位素符号,如“4He”、“16O”、“197Au”。我想使用matplotlib
中的annotate()
函数在绘图上标记许多(但不是所有)同位素。标签格式应具有上标中的原子质量。我可以使用乳胶样式的格式:
axis.annotate('$^{4}$He', xy=(x, y), xycoords='data')
我可以为我想标记的每一种同位素写几十条类似上面的语句,但我宁愿自动化。
如何从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')
大概,有一个pandas
字符串方法可以放在上面。但我很难想出解决办法。我一直在尝试split()
和extract()
几种不同的模式,但是没有得到理想的效果。
要提取同位素符号的数字和元素,可以将regular expression(short:regex)与Python的^{} 模块结合使用。regex查找数字,然后查找使用组名称分组并可访问的字符。如果regex匹配,则可以提取数据并^{} 所需的注释字符串:
我会使用简单的字符串操作,而不需要regex的麻烦。
这是我使用
split
的答案。使用的regexp是可以改进的,我很不擅长那种东西:-)产生
相关问题 更多 >
编程相关推荐