好吧,说实话,我不确定如何提出这个问题,因为我认为这个错误可能发生在多个地方,所以我只需输入所有这些错误(感谢您对一个菜鸟有耐心)这里)。
我正在尝试使用lastfm数据库: https://grouplens.org/datasets/hetrec-2011/
所以他们有这个python脚本,可以帮助我们从这个数据集中读取数据。
所以我做的是首先使用给定的iter_lines函数解析csv文件的行:
### first, open file into a file handle object
file = os.path.join(baseDir, 'artists.dat')
file_opener = open(file, "r")
lines = iter_lines(file_opener)
其中iter_lines()函数看起来像这样(给定):
def iter_lines(open_file):
reader = csv.reader(
open_file,
delimiter='\t',
)
next(reader) # Skip the header
return reader
然后我尝试使用他们给定的parse_artist_line()函数来读取artist.csv:
artists_df = pd.DataFrame(['key','value'])
for line in lines:
### so the parse_artist_line() will return a dictionary
artist_dict = parse_artist_line(line)
artist_list = artist_dict.items()
### try to put in a temporary dataframe
temp = pd.DataFrame.from_dict(artist_dict, orient='index')
### finally append the temporary df to the artists_df
artists_df.append(temp, ignore_index=True)
print(artists_df.head(5))
当我用最后一个语句打印artists_df时,我只得到这个输出:
0
0 key
1 value
和他们的parse_artist_line()看起来像这样:
def parse_artist_line(line):
(artist_id, name, _, _) = line
current_artist = deepcopy(ARTISTS)
current_artist["artist_id"] = int(artist_id)
current_artist["name"] = name
return current_artist
不过,如果你打印temp,它看起来像这样:
0
artist_id 18743
name Coptic Rain
如果我尝试使用“columns”作为from_dict()的“orient”参数输入,我会收到错误:
ValueError: If using all scalar values, you must pass an index
我已关注以下帖子/信息页面:
我不再确定,我做错了什么(可能是每一步)。任何帮助/指导表示赞赏!
答案 0 :(得分:1)
我认为这里没有必要将文件转换为DataFrame
然后转换为usecols
,更简单的是使用read_csv
,如果需要,过滤列名称添加参数artists_df = pd.read_csv('artists.dat', sep='\t', usecols=['id','name'])
print (artists_df.head())
id name
0 1 MALICE MIZER
1 2 Diary of Dreams
2 3 Carpathian Forest
3 4 Moi dix Mois
4 5 Bella Morte
:
artists_df = pd.read_csv('artists.dat', sep='\t')
print (artists_df.head())
id name url \
0 1 MALICE MIZER http://www.last.fm/music/MALICE+MIZER
1 2 Diary of Dreams http://www.last.fm/music/Diary+of+Dreams
2 3 Carpathian Forest http://www.last.fm/music/Carpathian+Forest
3 4 Moi dix Mois http://www.last.fm/music/Moi+dix+Mois
4 5 Bella Morte http://www.last.fm/music/Bella+Morte
pictureURL
0 http://userserve-ak.last.fm/serve/252/10808.jpg
1 http://userserve-ak.last.fm/serve/252/3052066.jpg
2 http://userserve-ak.last.fm/serve/252/40222717...
3 http://userserve-ak.last.fm/serve/252/54697835...
4 http://userserve-ak.last.fm/serve/252/14789013...
如果想要读取所有列:
{{1}}