使用多索引值将列添加到数据框

时间:2017-06-16 10:13:24

标签: python pandas

我有一个从外部数据创建的数据框,大致看起来像这样

private Config() {
}

public static final String YOUTUBE_API_KEY = "code value";

我需要一个新列df = pandas.DataFrame([(5, 5821, 5), (5, 5819, 6), (5, 5818, 7), (6, 5818, 12), (7, 119, 20), (7, 118, 0), (7, 116, 11), (7, 115, 15), (7, 114, 17)], columns=(('ID', 'SUBID', 'VALUE'))).set_index(['ID', 'SUBID']) ,其中包含当前行PREV_VALUE的值VALUE。那是

(ID, SUBID - 1)

我可以使用 VALUE PREV_VALUE ID SUBID 5 5821 5 NaN 5819 6 7 5818 7 NaN 6 5818 12 NaN 7 119 20 0 118 0 NaN 116 11 15 115 15 17 114 17 NaN 混淆我的方式,但这对于大型数据帧来说速度非常慢。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

这就是你想要的吗?

df2 = pd.DataFrame(df.values,
                   index=pd.MultiIndex.from_tuples([(tup[0], tup[1]+1)
                                                    for tup in df.index.get_values()],
                                                    names=df.index.names),
                   columns=df.columns)

df.join(df2, how='left', rsuffix='PREV_VALUE')

结果:

In [126]: df.join(df2, how='left', rsuffix='PREV_VALUE')
Out[126]:
          VALUE  VALUEPREV_VALUE
ID SUBID
5  5821       5              NaN
   5819       6              7.0
   5818       7              NaN
6  5818      12              NaN
7  119       20              0.0
   118        0              NaN
   116       11             15.0
   115       15             17.0
   114       17              NaN