2017-07-04 5 views
0

ich Liste in Datenrahmen setzen wollen, ist mein Code,Konvertieren Sie mehrere Listen zu Datenrahmen Python

webpage_urls = ["https://data.gov.au/dataset?q=&sort=extras_harvest_portal+asc%2C+score+desc%2C+metadata_modified+desc&_organization_limit=0&groups=sciences&organization=departmentofagriculturefisheriesandforestry&_groups_limit=0", 
       "https://data.gov.au/dataset?q=&organization=commonwealthscientificandindustrialresearchorganisation&sort=extras_harvest_portal+asc%2C+score+desc%2C+metadata_modified+desc&_organization_limit=0&groups=sciences&_groups_limit=0", 
       "https://data.gov.au/dataset?q=&organization=bureauofmeteorology&sort=extras_harvest_portal+asc%2C+score+desc%2C+metadata_modified+desc&_organization_limit=0&groups=sciences&_groups_limit=0", 
       "https://data.gov.au/dataset?q=&sort=extras_harvest_portal+asc%2C+score+desc%2C+metadata_modified+desc&_organization_limit=0&groups=sciences&organization=tasmanianmuseumandartgallery&_groups_limit=0", 
       "https://data.gov.au/dataset?q=&organization=department-of-industry&sort=extras_harvest_portal+asc%2C+score+desc%2C+metadata_modified+desc&_organization_limit=0&groups=sciences&_groups_limit=0"] 

    for i in webpage_urls: 
     wiki2 = i 
     page= urllib.request.urlopen(wiki2) 

     soup = BeautifulSoup(page) 

     # fetching organisations 

     data3 = soup.find_all('li', class_="nav-item active") 

     lobbying1 = [] 
     for element in data3: 
      lobbying1.append(element.span.get_text()) 
     print(lobbying1) 

     df = pd.DataFrame({'Organisation':lobbying1}) 

Mein oben Code geben Ausgang als:

['Reserve Bank of Aus... (24)', 'Business Support an... (24)'] 
['Department of Finance (16)', 'Business Support an... (16)'] 
['Department of Agric... (13)', 'Business Support an... (13)']...so on 

Welche mehrere Listen, kein verschachtelt und ich erhalte Datenrahmen nur wie folgt:

Organisation 
0 Australian Charitie... (1) 
1 Business Support an... (1) 

I-Ausgang als zwei gemeinsam in Spalte erste Element der Liste Spalten wollen lumber 1 und zweites Element der Liste in Spalte 2, und ich möchte alle Einträge:

Hilf mir dabei.

Antwort

1

Ich glaube, Sie [] für list of lists hinzufügen müssen und dann verwenden DataFrame Konstruktor:

df = pd.DataFrame([lobbying1], columns=['Organization','Groups']) 
    print (df) 

        Organization  Groups 
0 Department of Agric... (35) Science (35) 
       Organization  Groups 
0 Commonwealth Scient... (8) Science (8) 
       Organization  Groups 
0 Bureau of Meteorology (4) Science (4) 
       Organization  Groups 
0 Tasmanian Museum an... (1) Science (1) 
       Organization  Groups 
0 Department of Indus... (1) Science (1) 

Bei Bedarf ein DataFrame für alle Daten anhängen lobbying1 bis data Liste und rufen Sie dann DataFrame Konstruktor aus Schleife:

data = [] 
for i in webpage_urls: 
    wiki2 = i 
    page= urllib.request.urlopen(wiki2) 

    soup = BeautifulSoup(page) 
    # fetching organisations 
    data3 = soup.find_all('li', class_="nav-item active") 

    lobbying1 = [] 
    for element in data3: 
     lobbying1.append(element.span.get_text()) 
    data.append(lobbying1) 

df = pd.DataFrame(data, columns=['Organization','Groups']) 
print (df) 
        Organization  Groups 
0 Department of Agric... (35) Science (35) 
1 Commonwealth Scient... (8) Science (8) 
2 Bureau of Meteorology (4) Science (4) 
3 Tasmanian Museum an... (1) Science (1) 
4 Department of Indus... (1) Science (1) 
+0

Thanks a lot. Es entspricht genau dem, was ich wollte. – Arti123

+0

Froh kann helfen. Btw, ich mag Australien sehr;) – jezrael

+0

gut zu wissen, du magst Australien :) – Arti123

0

Ihre Liste lobbying1 ist eine Liste von Listen. So können Sie eine zwei Spalten Datenrahmen erhalten, indem einfach pd.Dataframe Aufruf wie folgt:

lobbying1 = [['Reserve Bank of Aus... (24)', 'Business Support an... (24)'], 
['Department of Finance (16)', 'Business Support an... (16)'], 
['Department of Agric... (13)', 'Business Support an... (13)']] 
df = pd.DataFrame(main_list, columns=['Organization','Groups']) 

Sie diese erhalten als Ausgabe

>>> df.head() 
        Organization      Groups 
0 Reserve Bank of Aus... (24) Business Support an... (24) 
1 Department of Finance (16) Business Support an... (16) 
2 Department of Agric... (13) Business Support an... (13) 
>>> 
Verwandte Themen