获取pandas中每一列的非零值[英] Get non zero values for each column in pandas

本文是小编为大家收集整理的关于获取pandas中每一列的非零值的处理方法,想解了获取pandas中每一列的非零值的问题怎么解决?获取pandas中每一列的非零值问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我有熊猫数据框为 df:

accel access adviser afpif  afp   publish  afraid verizon
0.00  0.14    0.00   0.00   0.00   0.13    0.00   0.44
0.13  0.00    0.00   0.77   0.00   0.00    0.22   0.00
0.00  0.00    0.87   0.00   0.34   0.00    0.00   0.00
......................................................
.....................................................

我还有一个列表 L,其中包含列名称作为元素

L=['accel','afp','publish']

我只想根据pandas dataframe提取这些列表元素的非零值.

预期输出:-

dictionary={'accel':0.13,'afp':0.34,'publish':0.13}

推荐答案

使用 DataFrame.loc 带有字典理解和 iat 如果总是存在至少一个非 0 值:

d = {c: df.loc[df[c] ! =0, c].iat[0] for c in L }
print (d)
{'accel': 0.13, 'afp': 0.34, 'publish': 0.13}

更一般地只使用 0 列:

d = {c: next(iter(df.loc[df[c] != 0, c]), 'no value') for c in L }
print (d)
{'accel': 0.13, 'afp': 0.34, 'publish': 0.13}

本文地址:https://www.itbaoku.cn/post/1728073.html