如何从某一列中减去选定的列?
How to subtract selected columns from one certain column?
我试图从某一列中减去 selected 列,但它给我一个错误“ValueError:应为一维数组,得到一个形状为 (3, 4) 的数组”。
我的 csv 文件如下所示:
Number Nimi Summa Kino
0 1 Jan 30.5 12.5
1 2 Pets 30.5 12.5
2 3 Anni 30.5 12.5
因为用户可以创建无限数量的列,所以我需要 select 除了“Number、Nimi 和 Summa”之外的每一列。结果应该是需要从“Summa”中减去“Summa”之后的每一列。我希望这是有道理的。
df = pd.read_csv ('eelarve.csv')
columns_dont_want = ["Number", "Nimi", "Summa"]
select = [x for x in df.columns if x not in columns_dont_want]
df["Summa järel"] = df["Summa"] - df.loc[:, select]
df.to_csv('eelarve.csv', index=False)
你可以做到 drop
+rsub
:
df.drop(columns=columns_dont_want).rsub(df['Summa'], axis=0)
输出:
Kino
0 18.0
1 18.0
2 18.0
加入其他栏目:
out = (df[columns_dont_want]
.join(df.drop(columns=columns_dont_want)
.rsub(df['Summa'], axis=0))
)
输出:
Number Nimi Summa Kino
0 1 Jan 30.5 18.0
1 2 Pets 30.5 18.0
2 3 Anni 30.5 18.0
我向 df 添加了更多包含数据的列,以确保下面的代码有效。
import pandas as pd
df = pd.DataFrame({'Number': [1, 2, 3],
'Nimi': ['Jan', 'Pets', 'Anni'],
'Summa': [30.5, 30.5, 30.5],
'Kino': [12.5, 12.5, 12.5],
'Test1': [0, 1, 2],
'Test2': [0.1, 0.2, 0.3]
})
columns_dont_want = ["Number", "Nimi", "Summa"]
select = [x for x in df.columns if x not in columns_dont_want]
df['Summa järel'] = df['Summa'] - df[select].sum(axis=1)
输出为:
Number Nimi Summa Kino Test1 Test2 Summa järel
0 1 Jan 30.5 12.5 0 0.1 17.9
1 2 Pets 30.5 12.5 1 0.2 16.8
2 3 Anni 30.5 12.5 2 0.3 15.7
我试图从某一列中减去 selected 列,但它给我一个错误“ValueError:应为一维数组,得到一个形状为 (3, 4) 的数组”。 我的 csv 文件如下所示:
Number Nimi Summa Kino
0 1 Jan 30.5 12.5
1 2 Pets 30.5 12.5
2 3 Anni 30.5 12.5
因为用户可以创建无限数量的列,所以我需要 select 除了“Number、Nimi 和 Summa”之外的每一列。结果应该是需要从“Summa”中减去“Summa”之后的每一列。我希望这是有道理的。
df = pd.read_csv ('eelarve.csv')
columns_dont_want = ["Number", "Nimi", "Summa"]
select = [x for x in df.columns if x not in columns_dont_want]
df["Summa järel"] = df["Summa"] - df.loc[:, select]
df.to_csv('eelarve.csv', index=False)
你可以做到 drop
+rsub
:
df.drop(columns=columns_dont_want).rsub(df['Summa'], axis=0)
输出:
Kino
0 18.0
1 18.0
2 18.0
加入其他栏目:
out = (df[columns_dont_want]
.join(df.drop(columns=columns_dont_want)
.rsub(df['Summa'], axis=0))
)
输出:
Number Nimi Summa Kino
0 1 Jan 30.5 18.0
1 2 Pets 30.5 18.0
2 3 Anni 30.5 18.0
我向 df 添加了更多包含数据的列,以确保下面的代码有效。
import pandas as pd
df = pd.DataFrame({'Number': [1, 2, 3],
'Nimi': ['Jan', 'Pets', 'Anni'],
'Summa': [30.5, 30.5, 30.5],
'Kino': [12.5, 12.5, 12.5],
'Test1': [0, 1, 2],
'Test2': [0.1, 0.2, 0.3]
})
columns_dont_want = ["Number", "Nimi", "Summa"]
select = [x for x in df.columns if x not in columns_dont_want]
df['Summa järel'] = df['Summa'] - df[select].sum(axis=1)
输出为:
Number Nimi Summa Kino Test1 Test2 Summa järel
0 1 Jan 30.5 12.5 0 0.1 17.9
1 2 Pets 30.5 12.5 1 0.2 16.8
2 3 Anni 30.5 12.5 2 0.3 15.7