我正在尝试解析包含状态列的 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)