2016-12-04 4 views
2

Я спрашиваю, как использовать команду Python: df=pd.read_csv('olympics.csv'). Мое намерение - использовать панды для чтения этого файла и определить, сколько стран выиграло более 1 Золотую медаль.Python Pandas: df = pd.read_csv

Успение: 'olympics.csv' находится в том же каталоге, что и файл .py. Я попытался #using всего пути внутри скобок, но это не имело никакого эффекта

#('/Users/myname/temp/intro_ds/week2/olympics.csv')

Ошибки я получаю при запуске этого файла в Bash является: KeyError: «Gold» Я использую Python 2.7.10 на MacBook, Unix

КОД:

import pandas as pd 
df = pd.read_csv('olympics.csv') 
    only_gold = df.where(df['Gold'] >0) 

print only_gold() 
+4

Можете ли вы дать макет вашего CSV файл? Возможно, вставьте заголовок и первую строку или 2. Проблема заключается не в пути, а в том, что вы пытаетесь прочитать имя столбца, которое, как он думает, не существует. –

+0

Похоже, что «Золото» не является заголовком столбца, вещи чувствительны к регистру, возможно, «золото». – AChampion

+0

Почему вы не попробуете подмножество позже? df ['Gold'] предоставит вам все строки/страны с золотыми медалями. Я предполагаю, что комментарий Джеффа Кэри решен –

ответ

2

olympics.csv не имеет столбец с именем Gold, Silver или Бронза, когда вы впервые конвертируете его в csv. Вам нужно переименовать заголовки столбцов, пропустить некоторые ненужные строки и сделать индекс.

Чтобы прочитать olympics.csv, пропустить строки (если вам нужно, зависит от вашего Csv форматирования) и сделать индекс на название команды.

import pandas as pd 
df = pd.read_csv('olympics.csv', skiprows=1, index_col=0) 
df.head() 

Это должно дать вам результаты, как это который имеет 01!, 02! вместо Золото, Серебро в заголовке столбцов.

enter image description here

Чтобы переименовать столбцы заголовков в Gold, Silver и бронзового от 01!, 02! и 03!. Выполните следующие действия

for col in df.columns: 
    if col[:2]=='01': 
     df.rename(columns={col:'Gold'+col[4:]}, inplace=True) 
    if col[:2]=='02': 
     df.rename(columns={col:'Silver'+col[4:]}, inplace=True) 
    if col[:2]=='03': 
     df.rename(columns={col:'Bronze'+col[4:]}, inplace=True) 
    if col[:1]=='№': 
     df.rename(columns={col:'#'+col[1:]}, inplace=True) 

df.head() 

enter image description here

Теперь вы можете сделать запрос как

df['Gold'] #for summer olympics Gold medals 
df['Gold.1'] #for winter olympics Gold medals 
df['Gold.2'] #for combined summer+winter Gold medals 

All-time_Olympic_Games_medal_table Преобразование таблицы в csv

+0

Спасибо LaL ZaDa! Да, я также обнаружил позже в тот же день, что я не смог тщательно рассмотреть функцию «переименования» панд. – lino

Смежные вопросы