Łączenie dwóch plików CSV. Zliczanie.

0

Mam dwa pliki CSV, jeden z danymi na temat lotnisk, drugi zawiera nazwy państw i ich powierzchnię. Chcę policzyć ilość lotnik na kilometr kwadratowy. Pierwszy pomysł jaki miałem to zliczyć ile razy występuję nazwa państwa w kolumnie"państwo" w pliku 'airports'. I następnie odpowiednie wartości podzielić. Niestety tutaj nie wiedziałem jak wziąć wartości z tego co zostało policzone, porównać nazwy z wartościami w pliku 'areas'.Drugi pomysł to połączyć dwa pliki ale znowu pojawił się ten sam problem. To co napisałem do tej pory

import pandas as pd
import numpy as np
colnames=['numerek','nazwa','miasto','państwo','skrót1','skrót2','wspó1','wspoł2','numer1','numer2','oznaczenie','kontynent/stolica']
dane1=pd.read_csv('airports.csv',names=colnames,header=None)
dane2=pd.read_csv('area.csv')
df1=pd.DataFrame(dane1)
df2=pd.DataFrame(dane2)
df=pd.concat([df1.reset_index(), df2], axis=1).set_index('numerek')
a=df1['państwo'].str.split('|', expand=True).stack().value_counts()
print(df)



0

@Guaz: Jeśli chodzi o mój pierwszy komentarz to pomyślałem o czymś takim:

import pandas as pd
import numpy as np
colnames=['numerek','nazwa','miasto','państwo','skrót1','skrót2','wspó1','wspoł2','numer1','numer2','oznaczenie','kontynent/stolica']
dane1=pd.read_csv('airports.csv',names=colnames,header=None)
df1=pd.DataFrame(dane1)
a=df1['państwo'].str.split('|', expand=True).stack().value_counts()
e=dict(zip(df1.państwo,a))

Ale w wyniku otrzymuje tylko :
{'Papua New Guinea': 233, 'Greenland': 140, 'Iceland': 77, 'Canada': 2, 'Algeria': 1}

1

df1.państwo i a mają różne długości. zip() iteruje tyle razy ile elementów ma najmniejszy argument. The iterator stops when the shortest input iterable is exhausted.
Zmień ostatnią linijkę na

e=dict(zip(a.index, a))

Wtedy oba argumenty będą miały tą samą ilość elementów.

1 użytkowników online, w tym zalogowanych: 0, gości: 1