結果として文字列を含むテーブルのピボットを実行しようとしています。pandas - 数値以外の値を指定したpivot_table? (DataError:集計する数値型がありません)
import pandas as pd
df1 = pd.DataFrame({'index' : range(8),
'variable1' : ["A","A","B","B","A","B","B","A"],
'variable2' : ["a","b","a","b","a","b","a","b"],
'variable3' : ["x","x","x","y","y","y","x","y"],
'result': ["on","off","off","on","on","off","off","on"]})
df1.pivot_table(values='result',rows='index',cols=['variable1','variable2','variable3'])
しかし、私は得る:DataError: No numeric types to aggregate
。
意図したとおり、私は数字に結果の値を変更したときに、この作品:
df2 = pd.DataFrame({'index' : range(8),
'variable1' : ["A","A","B","B","A","B","B","A"],
'variable2' : ["a","b","a","b","a","b","a","b"],
'variable3' : ["x","x","x","y","y","y","x","y"],
'result': [1,0,0,1,1,0,0,1]})
df2.pivot_table(values='result',rows='index',cols=['variable1','variable2','variable3'])
をそして私は私が必要なものを得る:
variable1 A B
variable2 a b a b
variable3 x y x y x y
index
0 1 NaN NaN NaN NaN NaN
1 NaN NaN 0 NaN NaN NaN
2 NaN NaN NaN NaN 0 NaN
3 NaN NaN NaN NaN NaN 1
4 NaN 1 NaN NaN NaN NaN
5 NaN NaN NaN NaN NaN 0
6 NaN NaN NaN NaN 0 NaN
7 NaN NaN NaN 1 NaN NaN
私は数値に文字列をマッピングして、逆にすることができます知っています操作、しかしもっと洗練されたソリューションがありますか?
最後に、パンダのピボット()変更を置き換えるソリューション0.17.1 – camdenl
@RandallGoodwin、私はこの質問が2歳であることを認識していますが、エラーが発生しています "ValueError: "あなたのラムダを使って、あなたの頭の上から、なぜあなたは知っていますか? – RustyShackleford
別のアイデア:潜在的に複数の値が表示される場合は、 'aggfunc = lambda x:" ".join([y in x]のstr(y))' – dllahr