从Pandas Pivot中的关键列中减去列的子集

时间:2018-11-07 18:06:13

标签: python-3.x pandas pivot

我有一个数据透视表,其中包含一个时间序列中的多列数据:

             A    B    C    D
11/1/2018    1    5    5    7
11/2/2018    2    6    6    8
11/3/2018    3    7    7    9

在此示例中,数据列中的值并不重要。 我想从“ B”和“ C”列的子集中减去“键”列(在此例中为A列)中的值。然后,我想删除不在子集或键列中的所有列。结果将是:

             A    B    C
11/1/2018    1    4    4
11/2/2018    2    4    4
11/3/2018    3    4    4

我过去通过以下代码减去列:

df['dif'] = df['B'] -df['A']

但这将添加“ dif”列。我想用B-A值替换B列。此外,与其一次一次地传递指令(B-A,C-A),不如传递诸如“如果列表中的列,减去键列,否则删除列”之类的列表。

谢谢

2 个答案:

答案 0 :(得分:1)

您可以使用apply从您选择的子集列中减去A,最后再使用A再次join

df['A'].to_frame().join(df[['B','C']].apply(lambda x: x - df['A']))

            A   B   C
11/1/2018   1   4   4
11/2/2018   2   4   4
11/3/2018   3   4   4

答案 1 :(得分:1)

pandas.DataFrame.subaxis=0

Series中减去DataFrame时,熊猫默认会将DataFrame的列与index的{​​{1}}对齐。这是在使用Series运算符时发生的情况。但是,当您使用-方法时,可以覆盖该默认值,并指定pandas.DataFrame.sub应该使其索引与DataFrame的索引对齐。

Series