期待どおりにピボットしないpandas.DataFrameがあります。すべてをpivot_table
適切に配置しますが、集計関数を使用してそこに到達するという事実は不快です。さらにpivot_table
、フラットなデータ フレームではなく、不必要に複雑なオブジェクトを返すようです。
次の例を考えてみましょう
import pandas as pd
df = pd.DataFrame({'firstname':['Jon']*3+['Amy']*2,
'lastname':['Cho']*3+['Frond']*2,
'vehicle':['bike', 'car', 'plane','bike','plane'],
'weight':[81.003]*3+[65.6886]*2,
'speed':[29.022, 95.1144, 302.952, 27.101, 344.2],})
df.set_index(['firstname','lastname','weight'])
print('------ Unnecessary pivot_table does averaging ------')
print(pd.pivot_table(df, values='speed',
rows='firstname','lastname','weight'],
cols='vehicle'))
print('------ pivot method dies ------')
print(df.pivot( index=['firstname','lastname','weight'],
columns='vehicle',
values='speed'))
pivot_table
結果は
vehicle bike car plane
firstname lastname weight
Amy Frond 65.6886 27.101 NaN 344.200
Jon Cho 81.0030 29.022 95.1144 302.952
pivot
コマンドが行ったのと本質的に同じ出力を与える方法はありpivot_table
ますか (ただし、うまくいけば、よりフラットできれいになります)。それができない場合、出力を平坦化するにはどうすればよいpivot_table
ですか? 出力として欲しいのは、次のようなものです。
firstname lastname weight bike car plane
Amy Frond 65.6886 27.101 NaN 344.200
Jon Cho 81.0030 29.022 95.1144 302.952