首页 > 解决方案 > 有一个列表,需要一个 DataFrame 来使用 `loc` 按列值查找行

问题描述

我正在尝试从状态为“宾夕法尼亚州”的这些 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'

我知道它需要一个 DataFrame,但我已经设置df为一个列表。但我不知道如何使它成为 DataFrame 以便我的模式匹配正常工作。

我究竟做错了什么?

标签: pythonpandas

解决方案


在您的代码中,是您在开头定义df的空列表,而不是 Pandas DataFrame。[]您是否忘记加载数据:

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)

推荐阅读