sort_index的行为似乎已经改变。我希望按日期排序,但是自从我更新到0.20后,它按日期排序。我见过list of changes,但没有设法恢复相同的结果。有什么提示吗?
由于
答案 0 :(得分:2)
来自@Brad所罗门的评论让我意识到我可以在排序后转换为我想要的字符串格式。虽然字符串排序行为仍然存在,但我现在获得了相同的行为。
而不是
colnames = ['Date', 'Client', 'Value', 'OtherValue']
df = pd.DataFrame(data={c:v for c,v in zip(colnames, [col1,col2,col3,col4])})
df2 = df.groupby(['Client',pd.to_datetime(df['Date']).dt.to_period('W-THU')]).sum().unstack(level=1).fillna(0)
new_cols = [i.start_time.strftime('%d/%m')+
'-'+i.end_time.strftime('%d/%m')
for i in df2.columns.levels[1]]
df2.columns.set_levels(new_cols,level=1,inplace=True)
df2.columns = df2.columns.swaplevel(0,1)
df2.sort_index(level=0, axis=1, inplace=True)
写作
colnames = ['Date', 'Client', 'Value', 'OtherValue']
df = pd.DataFrame(data={c:v for c,v in zip(colnames, [col1,col2,col3,col4])})
df2 = df.groupby(['Client',pd.to_datetime(df['Date']).dt.to_period('W-THU')]).sum().unstack(level=1).fillna(0)
df2.columns = df2.columns.swaplevel(0,1)
df2.sort_index(level=0, axis=1, inplace=True)
new_cols = [i.start_time.strftime('%d/%m')+
'-'+i.end_time.strftime('%d/%m')
for i in df2.columns.levels[0]]
df2.columns.set_levels(new_cols,level=0,inplace=True)
解决它。