Python中如何提取DataFrame每行大于0值对应的列名
Pandas获取每行非零值对应列名的实现方法
你可以通过pandas的逐行遍历+布尔筛选快速实现需求,具体操作如下:
- 第一步:构造样例数据(如果已经有现成DataFrame可跳过这步)
import pandas as pd # 构造和你样例一致的DataFrame df = pd.DataFrame( data=[[0,2,3,0,2], [1,0,0,1,1], [1,0,4,0,0]], columns=['1922', '7', '233', '439', '662'] )
- 第二步:执行核心处理逻辑
# 逐行筛选非零值对应的列名,拼接为逗号分隔的字符串 df['Non_zeros'] = df.apply(lambda x: ', '.join(x[x != 0].index.tolist()), axis=1) # 输出仅含Non_zeros的结果 print(df[['Non_zeros']])
- 结果说明:你问题里样例输出的列名数字和输入表列名不一致属于笔误,代码会严格按照实际DataFrame的列名输出正确结果,上述样例输入运行后输出为:
Non_zeros 0 7, 233, 662 1 1922, 439, 662 2 1922, 233
内容的提问来源于stack exchange,提问作者Squid Game
相关产品推荐
相关产品推荐

