我需要将matriz(下面)转换为3列列表。
我目前有一个DataFrame:
A B C ...
a 1 3 4 ...
b 4 0 6 ...
c 9 8 0 ...
我需要得到一个结果:
Source Target Weight
a A 1
a B 3
a C 4
b A 4
b C 6
c A 9
c B 8
我一直在尝试使用pandas.pivot_table函数,但我无法获得所需的结果。
答案 0 :(得分:5)
您可以使用DataFrame.stack()方法:
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
答案 1 :(得分:0)
我在考虑使用pd.melt():
docker ps
它不会完全给你你想要的东西,但它可能是很好的知道:
pd.melt(df.reset_index(), id_vars=['index'], value_vars=['A', 'B', 'C'], var_name='Target', value_name='Weight')