使用来自其他数据框(组合)的值填充pandas数据框

时间:2017-08-03 05:10:24

标签: python pandas

这是组合和熊猫的一个小练习。

我目前有一个pandas数据框,如:

| node1 |节点2 |距离|
|悉尼|堪培拉| 100 |
|墨尔本|悉尼| 200 |
|堪培拉|墨尔本| 150 |

然后我创建一个新的数据框,因此列标题和行名称是节点的唯一值。

mat = pd.DataFrame(index = np.unique(df.node1), columns = np.unique(df.node1))

node1或node2就足够了,因为在构造数据帧时顺序无关紧要。

产生我想要的但充满了NaN值。

如何使用距离列的值填充mat而不写一些丑陋的循环?

由于

1 个答案:

答案 0 :(得分:1)

首先使用pivotset_indexunstack

mat = df.pivot(index='node1', columns='node2', values='distance')
print (mat)
node2      Canberra  Melbourne  Sydney
node1                                 
Canberra        NaN      150.0     NaN
Melbourne       NaN        NaN   200.0
Sydney        100.0        NaN     NaN
mat = df.set_index(['node1', 'node2'])['distance'].unstack()
print (mat)
node2      Canberra  Melbourne  Sydney
node1                                 
Canberra        NaN      150.0     NaN
Melbourne       NaN        NaN   200.0
Sydney        100.0        NaN     NaN

然后combine_firstT

mat = mat.combine_first(mat.T)
print (mat)
           Canberra  Melbourne  Sydney
node1                                 
Canberra        NaN      150.0   100.0
Melbourne     150.0        NaN   200.0
Sydney        100.0      200.0     NaN
相关问题