首页 > 解决方案 > 逐行的python pandas索引(1s)

问题描述

从 Pandas Dataframe 中,如何获取行级别的所有索引?

我的数据框有大约一百列。这是一个例子:

    a    b     c    d
0   1    0     1    0
1   0    0     0    1
2   1    1     0    1
3   1    1     0    0
4   1    1     1    1

预期的结果是

0   a,c
1   d
2   a,b,d
3   a,b
4   a,b,c,d

我在 Pandas 中非“NaN”值的stackoverflow 索引上发现了这个问题, 但它在列级别有效

提前致谢。

标签: pythonpandas

解决方案


如果只有10DataFrame.dot用于与列名称和分隔符的矩阵乘法,最后使用 删除分隔符Series.str.rstrip

df['e'] = df.dot(df.columns + ', ').str.rstrip(', ')
#if exist another values like 0,1 and compare 1
#df['e'] = df.eq(1).dot(df.columns + ', ').str.rstrip(', ')
print (df)
   a  b  c  d           e
0  1  0  1  0        a, c
1  0  0  0  1           d
2  1  1  0  1     a, b, d
3  1  1  0  0        a, b
4  1  1  1  1  a, b, c, d

也可以Series使用:

s = df.dot(df.columns + ', ').str.rstrip(', ')
print (s)
0          a, c
1             d
2       a, b, d
3          a, b
4    a, b, c, d
dtype: object

推荐阅读