将DataFrame的整数索引和生成的SciPy矩阵视为相同的东西是一个坏主意吗?



我有一个管道,它接受一个pandas DataFrame df,其中包含几个文本列,将它们连接到一个文档中,并对文档进行矢量化,从而得到一个scipy.sparse.csr_matrix,我们称其为X

之后,我使用X的行(对应于我的原始DataFrame的行)进行最近邻查询,当我想要显示一个向量的最近邻的文本名称时,我使用向量在X中的整数位置,如下所示:

>>> print "Nearest neighbor's name is", df.iloc[position_in_x,:]['my_name']

是一个坏的举动,或者可以在数据框架的整数位置被视为静态,只要我不添加或删除数据框架?

我想知道其他人是如何处理这个问题的。我想到的一个解决方案是使X的行向量在df中成为一个新列。

谢谢!

在这种情况下我不确定iloc,但如果您想要更严格-您总是可以使用带有loc属性的标签选择。您甚至可以在更改行顺序或添加新行之后使用它。Loc通过索引(不像iloc那样的整数位置)来选择行,默认情况下只是numpy矩阵中行的索引。

In [132]: df1
Out[132]: 
   x   y events
0  5  20       
2  7  22       
4  9  24       
In [133]: df2
Out[133]: 
   x   y events
1  6  21       
3  8  23       
In [134]: df3 = df1.append(df2)
In [135]: df3
Out[135]: 
   x   y events
0  5  20       
2  7  22       
4  9  24       
1  6  21       
3  8  23       
In [137]: df3.loc[3,:]
Out[137]: 
x          8
y         23
events      
Name: 3, dtype: object

也相关的

相关内容

  • 没有找到相关文章

最新更新