首页 > 解决方案 > interrows 问题 - 运行 PyLyrics 时输出 NaN

问题描述

我正在使用 PyLyrics 为一个项目制作歌词数据集。

我已经导入了数据集,安装了 PyLyrics,现在尝试让 Python 为数据集中的所有行生成歌词,但它没有任何输入。

import pandas as pd
data = pd.read_csv(r'C:\Users\kk\Desktop\dba lyrics analysis\all_periods_joined_for_lyrics_1.csv', header=1)
df=pd.DataFrame(data, columns=['Position', 'Track Name','Artist','Streams','date','period'])


for index, row in df.iterrows():
try:
    from PyLyrics import *
    df.loc[index, 'Lyrics'] = PyLyrics.getLyrics(row['Artist'], row['Track Name'])
except:
    pass

当我到达时print(df),输出是填充了我的标题和“NaN”的表格,而不是任何输出。此外,歌词栏不会生成。

我应该怎么办?

我是编码新手,但是这篇论文很快就要到期了,所以非常感谢任何和所有的帮助!!!

提前致谢!

标签: pythonpython-3.xpandas

解决方案


我可以想象将 import ofPyLyrics放入一个try-except块中隐藏了PyLyrics模块未安装在您的机器上因此无法导入的事实:

try:
    from PyLyrics import *
except:
    # If the import failed we can fix it here - but we just ignore it (pass)
    pass

而是将 放在from PyLyrics import *文件的开头而不try-except加块,这样如果未安装包,脚本将立即失败。在这里查看如何安装包:https ://pypi.org/project/PyLyrics/ 。

以下代码对我来说效果很好。

from PyLyrics import PyLyrics
from pprint import pprint
from pandas import read_csv

songs = read_csv('songs.csv', header=None, names=['Artist','Title'])
for index, row in songs.iterrows():
  print('Getting lyrics for', row.Artist, row.Title)
  try:
    lyrics = PyLyrics.getLyrics(row.Artist, row.Title)
  except:
    lyrics = None
    print('Failed to get lyrics for', row.Artist, row.Title)
  songs.loc[index, 'Lyrics'] = lyrics

pprint(songs)

"""
Getting lyrics for ErrorUndefined DoesNotExist
Failed to get lyrics for ErrorUndefined DoesNotExist
Getting lyrics for Taylor Swift Blank Space
Getting lyrics for Bon Jovi It's My Life
           Artist         Title                                             Lyrics
0  ErrorUndefined  DoesNotExist                                                NaN
1    Taylor Swift   Blank Space  Nice to meet you, where you been?\nI could sho...
2        Bon Jovi  It's My Life  This ain't a song for the broken-hearted\nNo s...
"""

歌曲.csv

Artist,Title
ErrorUndefined,DoesNotExist
Taylor Swift,Blank Space
Bon Jovi,It's My Life

推荐阅读