2017-05-06 6 views
0

Ich bin neu in der Verwendung von Pandas mit Python. Ich bin ein neuer Datenrahmen aus den folgenden Listen zu erstellen:Pandas DataFrame aus Listen erstellen und gleichzeitig Datentypen beibehalten

countries = ['Russian Fed.', 'Norway', 'Canada', 'United States', 
      'Netherlands', 'Germany', 'Switzerland', 'Belarus', 
      'Austria', 'France', 'Poland', 'China', 'Korea', 
      'Sweden', 'Czech Republic', 'Slovenia', 'Japan', 
      'Finland', 'Great Britain', 'Ukraine', 'Slovakia', 
      'Italy', 'Latvia', 'Australia', 'Croatia', 'Kazakhstan'] 

gold = [13, 11, 10, 9, 8, 8, 6, 5, 4, 4, 4, 3, 3, 2, 2, 2, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0] 
silver = [11, 5, 10, 7, 7, 6, 3, 0, 8, 4, 1, 4, 3, 7, 4, 2, 4, 3, 1, 0, 0, 2, 2, 2, 1, 0] 
bronze = [9, 10, 5, 12, 9, 5, 2, 1, 5, 7, 1, 2, 2, 6, 2, 4, 3, 1, 2, 1, 0, 6, 2, 1, 0, 1] 

Was ich habe, ist dies:

a = np.array([a, g, s, b]).T 
labels = ['countries', 'gold', 'silver', 'bronze'] 
df = pd.DataFrame.from_records(a, columns = labels) 

Es funktioniert, aber die letzten drei Spalten angezeigt werden als Strings statt Ints. Gibt es einen besseren Weg, um den Datenrahmen zu konstruieren, während die letzten 3 Spalten abgeleitet werden, ohne sie nach dem Erstellen des Datenrahmens in Ints konvertieren zu müssen?

Dank

Antwort

1

Sie können den Datenrahmen aus einem Wörterbuch konstruieren, wo die Werte sind die Listen und Tasten sind die Etiketten/Spalten:

df = pd.DataFrame({'countries': countries, 'gold': gold, 'silver': silver, 'bronze':bronze}) 

df.dtypes 

#bronze  int64 
#countries object 
#gold   int64 
#silver  int64 
#dtype: object 
Verwandte Themen