根据另一个DataFram填充Pandas列

2024-06-02 05:46:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个数据帧,想知道如何使用另一个数据帧中的某些值向其中一个添加列。具体来说,我的数据帧如下所示:

foo = pd.DataFrame( np.random.rand(3,3))
foo.columns = ['col_1','col_2','col_3']

      col_1     col_2     col_3
0  0.661546  0.554032  0.753549
1  0.063641  0.490173  0.998119
2  0.370046  0.424208  0.125751


bar = pd.DataFrame( [[1, 2], [1,1], [3,3], [1,2], [2,1], [3,2]])

   0  1
0  1  2
1  1  1
2  0  3
3  1  2
4  2  1
5  0  2

我想向bar添加一个列,其值为foo的值,位置由bar的列指定。因此,期望的结果是:

^{pr2}$

我的应用程序涉及非常大的数据帧,所以我不认为迭代是一个好的选择。任何帮助都将不胜感激。在


Tags: columns数据应用程序dataframefoonpbarcol
1条回答
网友
1楼 · 发布于 2024-06-02 05:46:10

试试这个

foo['Index']=foo.index
df=pd.melt(foo,id_vars=['Index'],value_vars=[1,2,3])
df
Out[563]: 
   Index variable     value
0      0        1  0.178661
1      1        1  0.065537
2      2        1  0.926429
3      0        2  0.139027
4      1        2  0.502449
5      2        2  0.971156
6      0        3  0.161616
7      1        3  0.530899
8      2        3  0.420385



bar.merge(df,left_on=[0,1],right_on=['Index', 'variable'],how='left')\
    .drop(['Index', 'variable'],axis=1)

   0  1     value
0  1  2  0.502449
1  1  1  0.065537
2  0  3  0.161616
3  1  2  0.502449
4  2  1  0.926429
5  0  2  0.139027

相关问题 更多 >