I need to convert a matriz (below) into a 3 column list.
I currently have a DataFrame as this:
A B C ...
a 1 3 4 ...
b 4 0 6 ...
c 9 8 0 ...
and I need to get a results as this:
Source Target Weight
a A 1
a B 3
a C 4
b A 4
b C 6
c A 9
c B 8
I've been trying to use pandas.pivot_table function, but I can't get the result needed.
you can use DataFrame.stack() method:
In [335]: df.stack().reset_index().rename(columns={'level_0':'Source','level_1':'Target', 0:'Weight'})
Out[335]:
Source Target Weight
0 a A 1
1 a B 3
2 a C 4
3 b A 4
4 b B 0
5 b C 6
6 c A 9
7 c B 8
8 c C 0
I was thinking about using pd.melt() :
pd.melt(df.reset_index(), id_vars=['index'], value_vars=['A', 'B', 'C'], var_name='Target', value_name='Weight')
It won't give you exactly what you want but it might be good to know :
index Target Weight
0 a A 1.0
1 b A 4.0
2 c A 9.0
3 a B 3.0
4 b B 0.0
5 c B 8.0
...
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With