首页 > 解决方案 > 数据框中多列操作的矢量化解决方案

问题描述

我可能会有一个大数据框,其中第一行如下:

   BUCHDAT     y  y1   y2    y3     y4    y5     y6     y7
7 2017-02-26 577 30.0 622.0 1785.0 2633.0 422.0 10497.0 364.0 

现在我想用一个公式替换“y”到“y7”列:

df['y'] = df['y'] - df['y1']

是否有任何矢量化解决方案?所以我想在每一列中应用这个公式,下一列的公式应该是:

df['y1'] = df['y1']- df['y2']

你知道怎么做吗?

标签: pythonpandasdataframeoptimizationvectorization

解决方案


DataFrame.sub与 一起使用DataFrame.shift

df1 = df.iloc[:, 1:].astype(float)
df.iloc[:, 1:] = df1.sub(df1.shift(-1, axis=1))
print (df)
      BUCHDAT      y     y1      y2     y3      y4       y5       y6  y7
7  2017-02-26  547.0 -592.0 -1163.0 -848.0  2211.0 -10075.0  10133.0 NaN

推荐阅读