如何用列名替换pandas中的值

时间:2015-03-01 09:38:04

标签: python pandas machine-learning data-manipulation

我正在尝试使用Last.fm数据制作推荐系统,以推荐用户希望听到的用户歌曲。

我正在使用NearestNeighbors Algorithm来预测用户希望听到的专题歌曲。 我已经制作了模型,但我遇到的问题是我得到的是Integer值而不是Pandas DataFrame中的歌曲名称。 这是我得到的截图

enter image description here

我想要数据集中的歌曲名称而不是值部分中的数字。 我如何实现这一目标。 这就是输出的样子:

enter image description here 这是我的Ipython笔记本的链接:http://nbviewer.ipython.org/github/kartikjagdale/Last.fm-Song-Recommender/blob/master/Ipython%20Notebook/Last.Fm%20Song%20Recommeder.ipynb

并链接到我的github项目:https://github.com/kartikjagdale/Last.fm-Song-Recommender/

1 个答案:

答案 0 :(得分:2)

DataFrame.columns是一个Index对象,可以用作数组。

您可以使用pd.DataFrame(df.columns[model])来获取姓名,以下是一个示例:

import pandas as pd
import numpy as np
from sklearn.neighbors import NearestNeighbors
df = pd.DataFrame(np.random.randint(0, 5, (10, 5)), columns=list("ABCDE"))
neigh = NearestNeighbors(n_neighbors=3)
neigh.fit(df.T) # Fit the data
model = neigh.kneighbors(df.T, return_distance=False)
pd.DataFrame(df.columns[model])