如何从含单行datetime索引的Pandas DataFrame筛选值为True的列名列表
高效获取DataFrame中值为True的列名列表
嘿,我来给你个比循环写法更简洁的Pandas原生解法,处理这种单行的DataFrame特别顺手!
假设你的这个单行DataFrame变量名叫df,直接用下面一行代码就能搞定:
fruit_list = df.columns[df.iloc[0]].tolist()
我拆解下这个操作的逻辑:
df.iloc[0]:取出DataFrame里唯一的那一行,得到一个Pandas Series对象- 用这个Series作为布尔索引,去筛选
df.columns里对应值为True的列名 - 最后用
.tolist()把筛选后的列名转换成普通列表,就能得到你想要的['Apple', 'Orange', 'Pear']啦
如果以后你的DataFrame可能不止一行,想要获取所有行中至少出现过一次True的列名,也可以用这个通用写法:
fruit_list = df.columns[df.any(axis=0)].tolist()
这里df.any(axis=0)会检查每一列是否存在至少一个True,再用这个结果去筛选列名,适用性更广。
相比循环的写法,Pandas的向量化操作不仅代码更简洁,在数据量变大的时候运行效率也会更高哦~
内容的提问来源于stack exchange,提问作者agftrading
相关产品推荐
相关产品推荐

