python - 如果值= 1,则pandas数据框打印列

标签 python python-2.7 pandas

将此数据放入 panda 数据框中:

animal      tall    swim        jump  
frog          0        1            1
toad          1        0            0
tadpole       0        0            1

想要这样的输出:

frog swim
frog jump
toad tall
tadpole jump

有任何内置函数吗?

最佳答案

使用set_indexstack ,过滤 1 并通过构造函数创建 DataFrame:

df1 = df.set_index('animal').stack()
s = df1[df1==1]

df2 = pd.DataFrame({'a':s.index.get_level_values(0),
                    'b':s.index.get_level_values(1)})
print (df2)
         a     b
0     frog  swim
1     frog  jump
2     toad  tall
3  tadpole  jump

另一个解决方案是使用MultiIndex.to_frame :

df2 = s.index.to_frame(index=False)
df2.columns = ['a','b']
print (df2)
         a     b
0     frog  swim
1     frog  jump
2     toad  tall
3  tadpole  jump

melt 的不同解决方案并按 query 进行过滤:

df2 = (df.melt('animal', var_name='val')
         .query('value == 1')
         .sort_values('animal')
         .reset_index(drop=True)
         .drop('value', axis=1))

关于python - 如果值= 1,则pandas数据框打印列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51667038/

相关文章:

python - mongodb 集合中出现次数最多的文档

python - 创建具有一个数组形状和列表中的值的 numpy 数组

python - BaseSpider 和 CrawlSpider 的区别

python - 在 Python 2.7 中将 ½ 解析为 0.5

python - pandas 多索引级别内按列排序

python - 定义函数,TypeError

python - 如果MSSQL查询为空,如何删除空白表?

python-2.7 - 在 MXnet 中使用 im2rec 创建带有 png 图像的数据集

python - 使用 DateTimeIndex 计算 Dataframe 中字符串的出现次数

python - 从 PySpark 中的类别分布中查找值的百分位数