1

我正在尝试解析包含状态列的 csv。我想从一个聚合的 csv 中为每个单独的状态制作一个 csv。该代码为“Virginia”和“West Virginia”创建了一个数据框,但问题是“Virginia”df 还包含所有“West Virginia”行。有想法该怎么解决这个吗?通过设置 regex=False,我能够解决与“Arkansas”和“Kansas”相同的问题。

df = pd.read_csv(io.StringIO(stat.decode('utf-8')))

states = parse(df, 'state')

write_states(df, states)

def parse(df, suffix):
    df = df.sort_values(by=[suffix])
    df = df[suffix]
    df = df.drop_duplicates()
    df = [df for df in df]
    return df

def write_states(df, states):
    mk_dir('states')
    print(f"writing to '{os.path.join(os.getcwd(), 'states')}'")
    d = df
    s = tqdm(states, ncols=103, leave=False, ascii=' #')
    for state in s:
        s.set_description(state)
        df = d[d['state'].str.contains(state, regex=False)]
        dates = np.array(df['date'], dtype='datetime64')
        states = np.array(df['state'])
        total_cases = np.array(df['cases'], dtype='int64')
        total_deaths = np.array(df['deaths'], dtype='int64')
        new_cases = get_diff(total_cases)
        new_deaths = get_diff(total_deaths)
        df = pd.DataFrame({'date': dates, 'state': states, 'total cases': total_cases, 
            'total deaths': total_deaths, 'new cases': new_cases, 'new deaths': new_deaths})
        df.to_csv(f"states/{state}.csv", index=False)

4

1 回答 1

1

添加^$到正则表达式怎么样?这应该可以处理诸如 West/Virginia、Ar/kansas 等的歧义。

df = d[d['state'].str.contains(f'^{state}$', case=False)]
于 2021-03-09T02:30:35.087 回答