如何通过从其他每一列中减去第一列来创建新的数据框?

How can I create a new dataframe by subtracting the first column from every other column?

import pandas as pd
df = {'a': [1,1,1], 'b': [3,3,3,], 'c': [5,5,5,], 'd': [7,7,7], 'e': [9,9,9]}
df1 = pd.DataFrame(df, columns = ['a', 'b', 'c', 'd', 'e'])
dg = {'b': [2,2,2], 'c': [4,4,4], 'd': [6,6,6], 'e': [8,8,8]}
df2 = pd.DataFrame(dg, columns = ['b', 'c', 'd', 'e'])
df1
    a   b   c   d   e
0   1   3   5   7   9
1   1   3   5   7   9
2   1   3   5   7   9

df1 是我的原始数据框。我想通过从其他列中减去列 a 来创建另一个数据框(取列 a 和所有其他列之间的差异)。

df2
    b   c   d   e
0   2   4   6   8
1   2   4   6   8
2   2   4   6   8

df2 是结果。

非常感谢你的帮助。

一种方法是

import pandas as pd

df = {'a': [1,1,1], 'b': [3,3,3,], 'c': [5,5,5,], 'd': [7,7,7], 'e': [9,9,9]}
df1 = pd.DataFrame(df, columns = ['a', 'b', 'c', 'd', 'e'])

df2 = pd.DataFrame()
for col in df1.columns[1:]:
    df2[col] = df1[col] - df1[df1.columns[0]]
df = df1.loc[:,'b':].apply(lambda x: x-df1['a'])
print(df)

打印:

   b  c  d  e
0  2  4  6  8
1  2  4  6  8
2  2  4  6  8
df1.iloc[:,1:].sub(df1.a,axis=0)

    b   c   d   e
0   2   4   6   8
1   2   4   6   8
2   2   4   6   8