首页 > 解决方案 > 如何根据列值减去所有行并将它们添加到额外列中

问题描述

我有一个ndarray包含 15 列的内容。结构如下图

    col_1     col_2   col_3   col_4 Col_5
1   0.01      met_1   DT      2.3   0.78
2   0.01      met_1   DT_2    3.2   0.56
3   0.01      met_1   Lin     3.2   0.02

现在,我想从 中减去col_4和的col_5值。最后,我想将它们添加到 2 个新列中。预期输出如下DTDT_2Lin

    col_1     col_2   col_3   col_4 Col_5   del_col_4 del_col_5
1   0.01      met_1   DT      2.3   0.78    0.90    -0.76
2   0.01      met_1   DT_2    3.2   0.56    0.00    -0.54
3   0.01      met_1   Lin     3.2   0.02    0.00    0.00

请注意,因为我有 15 列并且说我只想要 10 列(然后我还必须在额外的 10 列中添加减法结果)。你能告诉我我该怎么做吗?

标签: pythonpython-3.xpandasnumpy

解决方案


检查与

col = ['col_4','Col_5']
s = df[col].rsub(df.loc[df.col_3=='Lin',col].iloc[0],axis=1)
df = df.join(s.add_prefix('del_'))
df
Out[171]: 
   col_1  col_2 col_3  col_4  Col_5  del_col_4  del_Col_5
1   0.01  met_1    DT    2.3   0.78        0.9      -0.76
2   0.01  met_1  DT_2    3.2   0.56        0.0      -0.54
3   0.01  met_1   Lin    3.2   0.02        0.0       0.00

推荐阅读