繁体   English   中英

Python的“输入”功能,错误地填充了熊猫数据框

[英]Python 'in' function , pandas dataframe wrongly populated

from collections import defaultdict
import csv
from bs4 import BeautifulSoup
import urllib2
import pandas as pd
import re

text = open("/Users/dynajose/Desktop/PlayList.rtf").read()
songDom = BeautifulSoup(text) 

data=defaultdict(list)
musicData=defaultdict(list)

f_music = songDom.find_all("div", {"class" : "_gx6 _agv"})

for music in f_music:
    try:
        Name_title = music.find("a","_gx7")
        data['Name'].append(Name_title.text)
    except:
        data['Name'].append("")

    try:
        type_title = music.find("div","_1fs8 fsm fwn fcg") 
        data['Type'].append(type_title.text)
    except:
        data['Type'].append("") 


for link_music in f_music:
    variable=link_music.find('a', href=re.compile('^https:'))['href']
    data['Link'].append(variable)


for verified_page in f_music:
    for page in verified_page:
        page_verified = page.find_all('span',{'aria-label':'Verified Page'})
        #print page_verified
        check= "Verified Page"
        for a in page_verified :
             if check in a :
                    musicData['Link'].append(True)
             else :
                    musicData['Link'].append(False)




#if sum([True for a in page_verified if check in a]) > 1:
         #   musicData['Link'].append(True)
        #else :
         #   musicData['Link'].append(False)


#df = pd.DataFrame(data)
dr= pd.DataFrame(musicData)
#df
dr

打印page_verified输出

博士输出

期望的结果-因此,如果页面经过验证,我希望DataFrame列为True。 是否通过span标签和aria-label标签定义了页面是否经过验证。 (DataFrame是布尔值)

我的逻辑-如果该行中包含“已验证的页面”,我会附加True。 否则错。

但是在这种情况下,所有行都具有“已验证页面”,但它转到了其他部分。

Python中是否有任何功能可以帮助我更有效地执行此功能,或者有任何更好的方法来实现所需的结果?

看起来您的page_verified变量实际上是一个列表,这就是为什么您的检查返回false的原因。

范例:

l = ['ab']
'a' in l
False

如果返回的列表始终包含一个元素,请执行

if check in page_verified[0]:

如果返回的列表可以是多个元素,则可以尝试类似的操作(可能是一种更好的方法,但可以使用)

if sum([True for a in page_verified if check in a]) > 1:

**编辑**

请提供此输出,以便我们获得更多信息

for music in f_music:
    for verified_page in f_music:
        for page in verified_page:
            page_verified = page.find_all('span',{'aria-label':'Verified Page'})
            print page_verified
            check= "Verified Page"
            print page_verified[0]
            print type(page_verified[0])
            print check in page_verified[0]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM