python - 将 DataFrame 的整数索引和生成的 SciPy 矩阵视为同一件事是个坏主意吗?

标签 python pandas scipy scikit-learn

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

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

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

这是一个错误的举动,还是只要我不在 DataFrame 中添加或删除,就可以将 DataFrame 中的整数位置视为静态?

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

谢谢!

最佳答案

在这种情况下我不确定 iloc,但如果你想要更严格 - 你总是可以使用 selection by label带有 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

Also related

关于python - 将 DataFrame 的整数索引和生成的 SciPy 矩阵视为同一件事是个坏主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32574622/

相关文章:

python - 将 Pandas 数据框字符串拆分为单独的行

python - 使用 pandas 和数据透视表更新 excel 文件

python - 对 x 值矩阵中的每一行进行插值

python - 为什么 scipy.fftpack.rfft 返回真实值?

python - Tweepy 仅返回 76 条推文

使用编译对象的Python正则表达式子

python - 如何用这些函数创建字典的字典?

python - 十进制 ('5E+1' ) 可以在 Python 中简单地转换为十进制 ('50' ) 吗?

python - 如何在pandas中执行逐行操作

python - 如何在不同长度轴的 n 维中进行插值