假设有如下的数据框
cat dog hamster dolphin
cat 1 0.5 0 0.25
dog 0.5 1 0 0
hamster 0 0 1 0.5
dolphin 0.25 0 0.5 1
我想要以字典格式获取给定行中大于零的列值。例如,对于仓鼠行,结果应为:
{ 'hamster': 1, 'dolphin': 0.5 }
不过,如果省略具有相同名称的列,这将更好。对于“hamster”,最好如下:
{ 'dolphin': 0.5 }
目前我使用 df["hamster"].to_dict()
获取给定行的所有值,并通过字典推导式去除零值,例如{k: v for (k,v) in d.items() if v > 0 }
。但这远非理想,因为数据框的原始尺寸约为50000 x 50000。在pandas中是否有更简单的方法来筛选出值为0的列(以及名称相同的列,如果易于实现)?