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