How to filter tolist
or values
below to get only non-zeros
JavaScript
x
5
1
import pandas as pd
2
df = pd.DataFrame({'A':[0,2,3],'B':[2,0,4], 'C': [3,4,0]})
3
df['D']=df[['A','B','C']].values.tolist()
4
df.explode('D')
5
Data
JavaScript
1
5
1
A B C
2
0 0 2 3
3
1 2 0 4
4
2 3 4 0
5
On Explode on Column D rows now becomes 9. But i want 4 rows in the output
Expected result
JavaScript
1
8
1
A B C D
2
0 0 2 3 2
3
0 0 2 3 3
4
1 2 0 4 2
5
1 2 0 4 4
6
2 3 4 0 3
7
2 3 4 0 4
8
I got list(filter(None, [1,0,2,3,0]))
to return only non-zeros. But not sure how to apply it in the above code
Advertisement
Answer
Simpliest is query
:
JavaScript
1
3
1
df['D']=df[['A','B','C']].values.tolist()
2
df.explode('D').query('D != 0')
3
Output:
JavaScript
1
8
1
A B C D
2
0 0 2 3 2
3
0 0 2 3 3
4
1 2 0 4 2
5
1 2 0 4 4
6
2 3 4 0 3
7
2 3 4 0 4
8