使用python/scikit/pandas生成dict向量从数组中收集字符串

2024-05-16 08:58:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些实验的数据集。我有一个数组,它包含5列和100行。其中4列包含浮点数,其余一列表示第4列包含一些反应物/化学物质的名称(即字符串)。可能会发生一个名称在其他行中有多个重复项。我想制作一个类似向量的字典,它将类似于说{'name1':0,'name2':1,…}。不会在这个向量中添加重复的字符串。我还没来得及解决过去的问题。在

样本数据:(只有部分数据来自大量的母数据)

Id,R1Test,R2Test,P1Test,Reactant,CC
0,1.2,3.2,5.2,Contra+1a,3.0
1,3.4,0.1,8.9,Sepi+1a,4.3
2,2.3,3.8,8.9,Sepi+1a,2.1
3,1.2,3.4,6.0,Drav2,1.2
4,-2.1,-1.0,9.8,Contra-1a,77.0
5,7.0,0.2,0.3,Contra+1a,2.5

有把手吗?在

提前谢谢。在


Tags: 数据字符串名称id字典数组向量样本
2条回答

我猜你问的是dict(名字:第一次出现的索引)。如果是这样的话, 以下是您可以使用的方法:

>>> import pandas as pd
>>> namesCol = pd.Series(list('abac'))
>>> namesCol
0    a
1    b
2    a
3    c
dtype: object

理想的结论是

^{pr2}$

获取唯一名称:

>>> names = namesCol.unique()
>>> names
array(['a', 'b', 'c'], dtype=object)

现在查找每个名称的第一个匹配项:

>>> corresp = {name: namesCol[namesCol == name].index[0] for name in names}
>>> corresp
{'a': 0, 'c': 3, 'b': 1}
labels, uniques = pd.vectorize(s['Reactant'])

这将返回您拥有的唯一值和该列的标签。。。在

如果你只是需要一本字典,而不是按照你的要求来替换它们或其他任何东西,你可以做以下事情:

^{pr2}$

在唯一值上循环,并为每个值指定一个整数。在

相关问题 更多 >