PV8*_*PV8 1 python optimization vectorization dataframe pandas
我可能会有一个较大的数据框,其中包含以下第一行:
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
Run Code Online (Sandbox Code Playgroud)
现在我想用公式替换“ y”至“ y7”列:
df['y'] = df['y'] - df['y1']
是否有矢量化解决方案?因此,我想将此公式应用于每一列,对于下一列,公式应为:
df['y1'] = df['y1']- df['y2']
你有什么想法吗?
使用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
Run Code Online (Sandbox Code Playgroud)
这是使用底层numpy数组以取得良好性能的方法:
df.iloc[:,1:-1] = df.values[:,1:-1] - df.values[:,2:]
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 364.0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
51 次 |
| 最近记录: |