在Python中加入数据帧

时间:2017-01-18 10:21:09

标签: python pandas join

对于Python中的以下数据框:

 Yref = pd.read_csv(rootDir + 'data/trailerClassificationData/C'+str(2)+'_withinShotAggr_'+withinShotAggr+'_btwshotAggr_'+btwShotAggr+'.csv',sep=',')
 Y = pd.read_csv(rootDir + 'data/trailerClassificationData/C'+str(3)+'_withinShotAggr_'+withinShotAggr+'_btwshotAggr_'+btwShotAggr+'.csv',sep=',')

其中YYref是某些目标分类输出:

Yref

   movieId Action Comedy Drama Horror
0  93797     1      0     1      0
1  25899     0      1     0      0
2  5673      0      1     1      0
3  86308     0      1     0      0
4  3577      0      0     1      0
5  3575      0      0     1      0
...
7100 rows × 5 columns

并且类似于Y

Y

   movieId Action Comedy Drama Horror
0  93797     1      0     1      0
1  1222      0      0     1      0
2  5673      0      1     1      0
3  86308     0      1     0      0
4  3577      0      0     1      0
5  3575      0      0     1      0

7136 rows × 5 columns

可以看出两个输出具有不同的行数。因此,第一个问题是如何将两个数据帧与on =' movieId'以及如何='内部' ?

Yjoin = Yref.join(Y,how='inner',on='movieId')

给了我这个错误。 columns overlap but no suffix specified。我设法使用以下方法解决了第一个问题:

  Yjoin = Yref.merge(Y,on='movieId',how='inner')
  Yjoin = Yres.ix[:,0:5]
  Yjoin.rename(columns={'Action_x':'Action','Comedy_x':'Comedy_x','Drama_x':'Drama','Horror_x':'Horror'}, inplace=True)

完成后,X是一个类似于Y的数据框,行数相似但没有关键字“movieId'”。

   test1     test2     test3          test4         test5
0  0.038039  0.212623  4.052835e-02   5.210721e-02  0.004591
1  0.054539  0.257145  0.000000e+00   0.000000e+00  0.115421
2  0.002842  0.209085  1.114923e-02   3.844100e-02  0.024544
3  0.136707  0.377181  0.000000e+00   0.000000e+00  0.055199
....
7136 rows × 5 columns

我还需要从X 中删除Yjoin 中已删除的行,因此X的长度为7100 * 5。在一天结束时,Y和X将具有相同的行数7100。

感谢您的意见

0 个答案:

没有答案