Home > Net >  How to return column&row index of cell of certain value
How to return column&row index of cell of certain value

Time:01-18

index col1 col2 col3
0      0    1    0
1      1    0    1
2      1    1    0

I am just stuck at a task: to find locations(indices) of all cells that equals to 1. I was trying to use such a statement

column_result=[]
row_result=[]
for column in df:           
    column_result=column_result.append(df.index[df[i] != 0])
for row in df:
    row_result=row_result.append(df.index[df[i]!=0)

my logic is using loops to traverse the colomns and rows separately and concatenate them later however it returns'NoneType' object has no attribute 'append' would you please help me to debug and complete this task

CodePudding user response:

Use numpy.where for indices for index and columns and then select them for cols, idx lists:

i, c = np.where(df.ne(0))

cols = df.columns[c].tolist()
idx = df.index[i].tolist()

print (idx)
[0, 1, 1, 2, 2]
print (cols)
['col2', 'col1', 'col3', 'col1', 'col2']

Or use DataFrame.stack with filtering for final DataFrame:

s = df.stack()

df1 = s[s.ne(0)].rename_axis(['idx','cols']).index.to_frame(index=False)
print (df1)
   idx  cols
0    0  col2
1    1  col1
2    1  col3
3    2  col1
4    2  col2
  •  Tags:  
  • Related