Python interrows问题-运行Pyrics时的NaN输出
我正在为一个使用Pyrics的项目制作歌词数据集 我已经导入了数据集,安装了pyryrics,现在试图让Python为数据集中的所有行生成歌词,但它没有任何输入Python interrows问题-运行Pyrics时的NaN输出,python,python-3.x,pandas,Python,Python 3.x,Pandas,我正在为一个使用Pyrics的项目制作歌词数据集 我已经导入了数据集,安装了pyryrics,现在试图让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
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'的表,而不是任何输出。此外,歌词列不会生成
我该怎么办
我是新的编码,但论文即将到期,所以任何和所有的帮助是高度赞赏的
提前谢谢 我可以想象,将
PyLyrics
导入到try except
块中,隐藏了PyLyrics
模块未安装在您的机器上,因此无法导入的事实:
try:
from PyLyrics import *
except:
# If the import failed we can fix it here - but we just ignore it (pass)
pass
而是将Pyrics import*中的放在文件的开头,而不使用try except
块,这样,如果未安装软件包,脚本将立即失败。请在此处查看如何安装程序包:
下面的代码对我来说非常有效
从Pyrics导入Pyrics
从pprint导入pprint
从熊猫导入读取
歌曲=read_csv('songs.csv',header=None,name=['Artist','Title']))
对于索引,请选择歌曲中的行。iterrows()
打印('获取歌词',行.艺术家,行.标题)
尝试:
歌词=pyryrics.getLyps(row.Artist,row.Title)
除:
歌词=无
打印('无法获取',行.艺术家,行.标题的歌词)
songs.loc[索引,'歌词']=歌词
pprint(歌曲)
"""
获取ErrorUndefined DoesNotExist的歌词
无法获取ErrorUndefined DoesNotExist的歌词
获取泰勒·斯威夫特空白处的歌词
为Bon Jovi准备歌词这是我的生活
艺术家题名歌词
0错误未定义的DoesNotExist NaN
1 Taylor Swift空白处很高兴见到你,你去哪里了?\n我可以。。。
2 Bon Jovi这是我的生活这不是为心碎的人唱的歌\n不。。。
"""
歌曲.csv
Artist,Title
ErrorUndefined,DoesNotExist
Taylor Swift,Blank Space
Bon Jovi,It's My Life
您好,请提供更多的数据-例如一个小样本的所有\u期间\u加入\u歌词\u 1.csv
,这样我们就可以根据实际数据运行您的程序并重现问题。此外,您的for
-循环中的try except
缩进看起来是错误的。df
在执行for
循环之前是否包含正确的数据?另外:请在文件开头执行PyLyrics import*
中的,而不是每次执行for循环。嘿,谢谢你的回复。请参阅链接中的示例数据:我的意思是,你向我们展示了你问题的前(可能)3行,因此问题是独立的。(你可以编辑你的问题)(不是每个人都喜欢/可以从dropbox这样的外部来源下载文件)。谢谢,它确实可以工作,但输出的只是一首歌,但是,我有2000行(艺术家和歌曲),所以逐个浏览它们将是一项相当大的手工工作。有什么方法可以自动完成所有的行吗?我的数组<代码>歌曲代码>可以很容易地替换为CSV文件的内容。@IrBa将代码更新为从CSV文件读取。您必须更新名称
以匹配您的列
,并使用['Track Name']
或类似的名称更新我对标题的使用。