我正在尝试按州的字母顺序组织我的 df,但是当我使用 sort_values
按州排序时,没有任何反应。我相信数据的提取方式存在问题,因为我收到了一个无法识别“状态”的 KeyError。我应该使用 rename
函数而不是像我那样重命名列吗?
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import datetime
def load_data():
# importing datasets
df_2017=pd.read_excel('assets/US_States_Visited_2017.xlsx', skiprows=6,skipfooter=13)
df_2018=pd.read_excel('assets/US_States_Visited_2018.xlsx', skiprows=7,skipfooter=7)
df_2019=pd.read_excel('assets/US_States_Visited_2019.xlsx', skiprows=6,skipfooter=8)
# renaming columns
df_2017.columns = ['2017_rank','state','2016_market_share','visitation_2016','2017_market_share','visitation_2017','volume_change']
df_2018.columns = ['2018_rank','state','2018_market_share','visitation_2018','volume_change','2017_market_share','visitation_2017']
df_2019.columns = ['2019_rank','state','2019_market_share','visitation_2019','volume_change','2018_market_share','visitation_2018']
# stripping state names
df_2017['state'] = df_2017['state'].str.strip()
df_2018['state'] = df_2018['state'].str.strip()
df_2019['state'] = df_2019['state'].str.strip()
# dropping all columns except for relevent state and visitation columns
df_2017.drop(df_2017.columns[[0,2,4,6]], axis=1,inplace=True)
df_2018.drop(df_2018.columns[[0,2,4,5,6]], axis=1,inplace=True)
df_2019.drop(df_2019.columns[[0,2,4,5,6]], axis=1,inplace=True)
# multiplying visitation by 1000 to get accurate value
df_2017['visitation_2016'] = df_2017['visitation_2016']*1000
df_2017['visitation_2017'] = df_2017['visitation_2017']*1000
df_2018['visitation_2018'] = df_2018['visitation_2018']*1000
df_2019['visitation_2019'] = df_2019['visitation_2019']*1000
# starting output at state column
df_2017=df_2017.set_index('state')
df_2018=df_2018.set_index('state')
df_2019=df_2019.set_index('state')
# merging all datasets by state variable
merged_US_states_visitation = df_2017.merge(df_2018,on='state',how= 'left').merge(df_2019,on='state',how='right')
#sorting by name
merged_US_states_visitation.sort_values(by=['state'])
return merged_US_states_visitation
load_data().head(25)
答案 0 :(得分:2)
当您的目标是索引时,您正在尝试 i) sort_values;和 ii) 您没有分配排序结果。一起去:
merged_US_states_visitation.sort_index(inplace=True)