4

いくつかの行にまたがる2つの列に2つのデータセットを集約するパンダのピボットテーブルがあります。行ごとに既存の2つの列の集計値の差である別の列を追加したいと思います。これをpivot_table()呼び出しで直接実装する方法はありますか?返されたピボットがデータフレームであることを知っているので、他の方法で計算できますが、より効率的な方法があるかどうかだけが気になります。

私のデータの簡単な例:

  Set     Type   Val
  S1       A     1
  S1       B     2
  S1       B     3
  S2       A     4
  S2       B     5
  S2       C     6

データが私のdfである次のコードを使用する

piv=pivot_table(data,'Val',rows='Type',cols='Set',aggfunc=sum,fill_value=0.0)

私は以下を取得します

    S1  S2
A   1   4
B   5   5
C   0   6

出力を

    S1  S2 Diff
A   1   4   3
B   5   5   0
C   0   6   6

あるいは単に

   Diff
A   3
B   0
C   6
4

1 に答える 1

7

簡単。データフレーム(および一般的な行列)を使用すると、一度に複数の要素を簡単に操作できます。

適用する関数を定義します。

>>> def abs_diff(x, y):
>>>     return abs(x - y)

次に、それを適用します。

>>> df['Diff'] = abs_diff(df['S1'], df['S2'])

>>> df

   S1  S2  Diff
A   1   4     3
B   5   5     0
C   0   6     6

そしてもちろん、特定の列をレンダリングしたいだけの場合:-

>>> df['Diff']

A    3
B    0
C    6
Name: Diff

>>>もちろん、Pythonシェルプロンプトです)

于 2012-11-28T23:31:52.053 に答える