にパンダピボットテーブルを平坦化します。アンピボットは、/ Iは次のように見える(しかしはるかに大きい)データフレームでの開始分析のための一つのレベルインデックス
Df1 = pd.pivot_table(loads, values=['Number'], index = ['ID1', 'ID2'], columns=['Type'], margins=True, aggfunc=[sum] , fill_value=0)
DF1:
sum
Number
type B D E I L R All
ID1 ID2
IE345 E90 0 0 0 38 0 0 38
E92 0 0 26 0 0 0 26
E93 0 0 21 0 0 0 21
E95 0 0 0 0 0 9 9
IE346 E94 0 0 0 41 0 0 41
BLK 0 0 1 0 0 0 1
の中へ:
DF1:
ID1 ID2 B D E I L R All
IE345 E90 0 0 0 38 0 0 38
IE345 E92 0 0 26 0 0 0 26
IE345 E93 0 0 21 0 0 0 21
IE345 E95 0 0 0 0 0 9 9
IE346 E94 0 0 0 41 0 0 41
IE346 BLK 0 0 1 0 0 0 1
pandas.meltは私が探しています何ですが、それを動作させるために管理傾けるようです。
その後、私は、行の最高値の列名を追加したいのですが、当然の余白なし:最大値については
ID1 ID2 B D E I L R All Max
IE345 E90 0 0 0 38 0 0 38 I
IE345 E92 0 0 26 0 0 0 26 E
IE345 E93 0 0 21 0 6 0 27 E
IE345 E95 0 0 0 0 0 9 9 R
IE345 E94 0 0 0 41 0 0 41 I
IE345 BLK 0 0 1 0 1 0 2 E
、私が使用:
df['Max'] = df.idxmax(axis=1, skipna=True)
が、残念ながら、これはすべてを取ります。どのように私は私の目標を最も効率的な方法で達成することができますか?
!!! EDIT !!!!
最初の部分では、私はunpeotピボットテーブルを正確に返すソリューションを作成しました!コードここを参照してください:
df.columns = df.columns.get_level_values('Type')
df.reset_index(inplace=True)
は、今私は最大値のVmgをのソリューションを試してみましたが、残念ながらそれが返されます。この問題を解決する方法について
ValueError: could not convert string to float:
任意のアイデア?
カラムからのユニークな値を持つ素晴らしいソリューション!とても賢い!ただし、まだ動作しません。型はこれを返します:['I' 'R' 'E' 'F' 'Y' 'G']エラーが発生します:KeyError: "['' '' '' 'E' 'F' 'Y' ' G ']インデックスにない " – Uis234
@ Uis234、スクリプトを実行しようとしました__completely__ - 例外を介して行いますか? – MaxU
私は試しました:types = np.unique(df [['Type']])、types = pd.unique(df.ravel())、types = df ['Type']。 "、" – Uis234