gpt4 book ai didi

python - 用 pandas 将字符串拆分为数字和文本

转载 作者:行者123 更新时间:2023-12-02 05:17:57 25 4
gpt4 key购买 nike

设置

我有一个 pandas 数据框,其中包含“iso”列,其中包含化学同位素符号,例如“4He”、“16O”、“197Au”。我想使用 matplotlib 中的 annotate() 函数在绘图上标记许多(但不是全部)同位素。标签格式应在上标中包含原子质量。我可以使用 LaTeX 样式格式来做到这一点:

axis.annotate('$^{4}$He', xy=(x, y), xycoords='data')

我可以为我想要标记的每种同位素编写数十个 annotate() 语句,如上面的语句,但我宁愿自动化。

问题

如何从 iso 列中提取同位素编号和名称?

提取这些片段后,我可以制作标签。假设我们将它们转储到变量 NumSym 中。现在我可以循环我的同位素并执行如下操作:

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(),但无法获得所需的效果。

最佳答案

这是我使用split的答案。使用的正则表达式可以改进,我不擅长这类事情:-)

(\d+) 代表整数,([A-Za-z]+) 代表字符串。

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)

产品

     x   y
0 4 He
1 16 O
2 197 Au

关于python - 用 pandas 将字符串拆分为数字和文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32229419/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com