Есть список, нужен фрейм данных, чтобы использовать `loc` для поиска строк по значениям столбцов

#python #pandas

#python #pandas

Вопрос:

Я пытаюсь извлечь строки из этих CSV, где состояние «Пенсильвания»: https://github.com/CSSEGISandData/COVID-19/tree/master/csse_covid_19_data/csse_covid_19_daily_reports_us

У меня есть этот код:

 import glob
import pandas as pd

df = []

path = "/home/reallymemorable/Documents/git/COVID-19/csse_covid_19_data/csse_covid_19_daily_reports_us/*.csv"
for fname in glob.glob(path):
    row = df.loc[df['Province_State'] == 'Pennsylvania']
    print(row)
  

Я получаю эту ошибку:

AttributeError: 'list' object has no attribute 'loc'

Я понимаю, что он ожидает фрейм данных, но я установил df его в виде списка. Но я не знаю, как сделать его фреймом данных, чтобы мое сопоставление с образцом работало правильно.

Что я делаю не так?

Ответ №1:

В вашем коде df есть пустой список [] , который вы определяете в начале, а не фрейм данных Pandas. Вы забыли загрузить данные:

 path = "/home/reallymemorable/Documents/git/COVID-19/csse_covid_19_data/csse_covid_19_daily_reports_us/*.csv"
for fname in glob.glob(path):
    df = pd.read_csv(fname)   # this line???
    row = df.loc[df['Province_State'] == 'Pennsylvania']
    print(row)
  

Комментарии:

1. … Очевидно ли, что я давно не использовал Python?