给定一个像这样的熊猫框架:
在:
pokemon yes no ignore
Vulpix True False False
Nidorino False True False
Growlithe False False True
Krokorok False True False
Darumaka False False True
Klefki False True False
Croagunk True False False
获取与 pokemon 列关联的列作为行值的正确方法是什么?:
出:
pokemon Val
Vulpix yes
Nidorino no
Growlithe ignore
Krokorok no
Darumaka ignore
Klefki no
Croagunk yes
到目前为止,我尝试使用交叉表:
pd.crosstab(df, columns=['yes', 'no', 'ignore'])
但是,我收到一个值错误:
`ValueError: Shape of passed values`
获取先前输出的正确方法是什么?
答案 0 :(得分:4)
如果这些是 one-hot 编码,使得每行只有一个 1/True,列中的 set_index
和 dot
。
df = df.set_index('pokemon')
df = df.dot(df.columns)
pokemon
Vulpix yes
Nidorino no
Growlithe ignore
Krokorok no
Darumaka ignore
Klefki no
Croagunk yes
dtype: object
上面是一个 Series
,用于让 DataFrame 与您的输出相匹配:
df = df.dot(df.columns).to_frame('Val').reset_index()