Python中使用query函数从DataFrame获取对应videoId的问题
解决pandas query函数引用外部变量的问题
我来帮你搞定这个问题~你遇到的问题是因为在query的字符串表达式里,直接写"ans[0]"会被当成字面量字符串来匹配,而不是去读取外部列表ans里的第一个元素值,所以才返回了空的Series。
下面给你两种可靠的解决方法:
方法1:使用@符号引用外部变量(推荐)
pandas的query支持用@符号直接引用外部变量,这是最安全且简洁的方式,不用担心字符串转义的问题:
ans = ['I am confused'] # 直接引用列表元素 data.query('textOriginal == @ans[0]')['videoId'] # 或者先把目标值存到变量里,可读性更好 target_text = ans[0] data.query('textOriginal == @target_text')['videoId']
方法2:使用f-string拼接字符串
如果你习惯用字符串拼接的方式,也可以用f-string把变量值插入到查询表达式中:
ans = ['I am confused'] data.query(f'textOriginal == "{ans[0]}"')['videoId']
⚠️ 注意:如果你的文本里包含双引号,这种方式需要额外处理转义,所以更推荐第一种方法。
运行上面的代码后,就能得到你期望的结果——返回对应videoId为B的Series啦。
内容的提问来源于stack exchange,提问作者Nilam Adhikari
相关产品推荐
相关产品推荐

