数据帧与索引连接

时间:2019-08-20 00:23:50

标签: python pandas dataframe

我有一个从文件读取的Python数据框

下一步是将数据集分为2个数据集df_LastYear和df_ThisYear

注意:索引不会连续丢失2和6

      ID  AdmissionAge
0     14            68
1     22            86
3     78            40
4    124            45
5    128            35
7    148            92
8    183            71
9    185            98
10   219            79

应用了一些预测模型后,我得到了预测值y_ThisYear

的结果
     Prediction
0   2.400000e+01
1   1.400000e+01
2   1.000000e+00
3   2.096032e+09
4   2.000000e+00
5  -7.395179e+11
6   6.159412e+06
7   5.592327e+07
8   5.303477e+08
9   5.500000e+00
10  6.500000e+00

我正在尝试将df_ThisYear和y_ThisYear这两个数据集合并为一个数据集

但是我总是得到这些结果

       ID  AdmissionAge    Prediction
0    14.0          68.0  2.400000e+01
1    22.0          86.0  1.400000e+01
2     NaN           NaN  1.000000e+00
3    78.0          40.0  2.096032e+09
4   124.0          45.0  2.000000e+00
5   128.0          35.0 -7.395179e+11
6     NaN           NaN  6.159412e+06
7   148.0          92.0  5.592327e+07
8   183.0          71.0  5.303477e+08
9   185.0          98.0  5.500000e+00
10  219.0          79.0  6.500000e+00

有些NaN以前不存在

我发现这些NaN属于df_ThisYear

中未包含的索引

因此,我尝试重置索引,以便获得连续的索引

我用过

df_ThisYear.reset_index(drop = True)

但仍获得相同的索引

如何解决此问题,以便我可以将df_ThisYear与y_ThisYear正确连接?

3 个答案:

答案 0 :(得分:2)

那么您只需要col100

join

答案 1 :(得分:1)

如果您对使用concat感到非常兴奋,则可以为how参数提供'inner':

pd.concat([df_ThisYear, y_ThisYear], axis=1, join='inner')

这将返回

Out[6]: 
     ID  AdmissionAge    Prediction
0    14            68  2.400000e+01
1    22            86  1.400000e+01
3    78            40  2.096032e+09
4   124            45  2.000000e+00
5   128            35 -7.395179e+11
7   148            92  5.592327e+07
8   183            71  5.303477e+08
9   185            98  5.500000e+00
10  219            79  6.500000e+00

答案 2 :(得分:0)

因为y_ThisYear与df_ThisYear具有不同的索引

当我同时使用

df_ThisYear.join(y_ThisYear  )

它开始匹配每个数字及其匹配索引

如果索引实际上代表相同的记录,即df_ThisYear值中的索引7也与y_ThisYear索引7匹配,我知道这是正确的

就我而言,我只想将y_ThisYear中的第一条记录与df_ThisYear中的第一条记录匹配,而不管它们的索引号是什么

我找到了执行此操作的代码。

df_ThisYear = pd.concat([df_ThisYear.reset_index(drop=True), pd.DataFrame(y_ThisYear)], axis=1)

感谢大家对答案的帮助