0
sort_indexの動作が変更されたようです。私は日付でソートしたいのですが、0.20に更新してから、それを月の日でソートしています。私はlist of changesを見ましたが、同じ結果を回復することはできませんでした。任意のヒント?パンダで変更されたsort_indexの動作0.20
おかげ
sort_indexの動作が変更されたようです。私は日付でソートしたいのですが、0.20に更新してから、それを月の日でソートしています。私はlist of changesを見ましたが、同じ結果を回復することはできませんでした。任意のヒント?パンダで変更されたsort_indexの動作0.20
おかげ
@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)
を書いて、それを解決します。
一見したところ、APIが[0.19.2](http://pandas.pydata.org/pandas-docs/version/0.19.2/generated/pandas.DataFrame.sort_index .html) 〜[0.20.2](https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.sort_index.html)。それぞれのバージョンで 'df2.columns.get_level_values(0).dtype'をチェックしてみてください。私は 'dtype = 'O''(ピリオドではなく)を0.20にしています。 –
日時/月 - 日/月形式で間隔を返すようにdatetimeオブジェクトを文字列形式に変換するためです。あなたのコメントは、私が実際にその変換を行うことができることを実感しました。 – poeticcapybara