列の値に基づくパンダの集計減算

マーティン

私がDataFrameを持っているとしましょう

'name'     'quantity'   'day'
'A'         1           'Monday'
'A'         10          'Sunday'
'A'         5           'Friday'
'B'         2           'Monday'
'B'         30          'Sunday'
'B'         5           'Thursday'

構築する必要があるのは、名前ごとに日曜日の量から月曜日の量を引く別のデータフレームです。そのためgroupBy名前にa必要で、次にagg関数付きが必要だと思いますが、それらの日だけが考慮されるようにフィルターを実行する方法がわかりません。

例に従って、私が求める最終結果は次のとおりです。

'name'     'sub_quantity'
'A'         9 
'B'         28 
piRSquared

セットアップ

import pandas as pd
from io import StringIO

txt = """name     quantity   day
A         1           Monday
A         10          Sunday
A         5           Friday
B         2           Monday
B         30          Sunday
B         5           Thursday"""

df = pd.read_csv(StringIO(txt), delim_whitespace=True)

オプション1
unstack

d1 = df.set_index(['name', 'day']).quantity.unstack()

d1.Sunday.sub(d1.Monday)

name
A     9.0
B    28.0
dtype: float64

オプション2
query

s = df.set_index('name').query('day == "Sunday"').quantity
m = df.set_index('name').query('day == "Monday"').quantity
s - m

name
A     9
B    28
Name: quantity, dtype: int64

オプション3
xs

d1 = df.set_index(['day', 'name']).quantity
d1.xs('Sunday') - d1.xs('Monday')

name
A     9
B    28
Name: quantity, dtype: int64

オプション4
かわいいapply

def obnoxious(x):
    s = x.day.eq('Sunday').idxmax()
    m = x.day.eq('Monday').idxmax()
    q = 'quantity'
    return x.get_value(s, q) - x.get_value(m, q)

df.groupby('name').apply(obnoxious)

name
A     9
B    28
dtype: int64


タイミング
例データ
ここに画像の説明を入力してください

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

既存の列の値に基づくパンダの新しい列の計算

分類Dev

パンダ、別の列の値に基づいて値を減算します

分類Dev

パンダの条件に基づく列値の合計

分類Dev

パンダの列値に基づく条件付き乗算

分類Dev

パンダ-他の2つの列からのシフト値に基づく条件付き計算

分類Dev

パンダ:別の列の値に基づいて列を集計します

分類Dev

パンダ集計を使用した他の列に基づく結果

分類Dev

ループせずに過去の値の積に基づくパンダの値を計算します

分類Dev

列の値とgroupbyに基づくMysqlの減算

分類Dev

パンダの状態に基づいて行の値を減算します

分類Dev

パンダの別の列の値の範囲に基づいて列の内容を集計する

分類Dev

フラグ列に基づく合計結果(値の合計または減算)Oracle SQL Developer

分類Dev

2つの別々の列に基づく値の集計

分類Dev

複数のクロス集計に基づくパンダの頻度表

分類Dev

行の値に基づくパンダの新しい列

分類Dev

列の値に基づくパンダのグループ化

分類Dev

パンダ-列の値に基づく日付の追加

分類Dev

パンダ-以前に計算された行の値に基づいて行の値を計算します

分類Dev

パンダ-他の行の相対値に基づいて新しい列を計算します

分類Dev

パンダ-別の列との相互参照に基づいて新しい値を計算します

分類Dev

計算列の値に基づく累積列

分類Dev

パンダのグループ化と条件に基づく計算

分類Dev

パンダ:別の列のフィルターに基づいて集計

分類Dev

列の値に基づくパンダCOUNTIF

分類Dev

パンダgroupby; if条件:合計else:別の列に基づく特定の列の最大

分類Dev

文字列値に基づくデータの集計

分類Dev

別の列に基づいて値を合計してから減算する

分類Dev

パンダの各列の条件に基づく列ごとの値の置換

分類Dev

パンダの複数の列にわたるIDに基づく合計

Related 関連記事

  1. 1

    既存の列の値に基づくパンダの新しい列の計算

  2. 2

    パンダ、別の列の値に基づいて値を減算します

  3. 3

    パンダの条件に基づく列値の合計

  4. 4

    パンダの列値に基づく条件付き乗算

  5. 5

    パンダ-他の2つの列からのシフト値に基づく条件付き計算

  6. 6

    パンダ:別の列の値に基づいて列を集計します

  7. 7

    パンダ集計を使用した他の列に基づく結果

  8. 8

    ループせずに過去の値の積に基づくパンダの値を計算します

  9. 9

    列の値とgroupbyに基づくMysqlの減算

  10. 10

    パンダの状態に基づいて行の値を減算します

  11. 11

    パンダの別の列の値の範囲に基づいて列の内容を集計する

  12. 12

    フラグ列に基づく合計結果(値の合計または減算)Oracle SQL Developer

  13. 13

    2つの別々の列に基づく値の集計

  14. 14

    複数のクロス集計に基づくパンダの頻度表

  15. 15

    行の値に基づくパンダの新しい列

  16. 16

    列の値に基づくパンダのグループ化

  17. 17

    パンダ-列の値に基づく日付の追加

  18. 18

    パンダ-以前に計算された行の値に基づいて行の値を計算します

  19. 19

    パンダ-他の行の相対値に基づいて新しい列を計算します

  20. 20

    パンダ-別の列との相互参照に基づいて新しい値を計算します

  21. 21

    計算列の値に基づく累積列

  22. 22

    パンダのグループ化と条件に基づく計算

  23. 23

    パンダ:別の列のフィルターに基づいて集計

  24. 24

    列の値に基づくパンダCOUNTIF

  25. 25

    パンダgroupby; if条件:合計else:別の列に基づく特定の列の最大

  26. 26

    文字列値に基づくデータの集計

  27. 27

    別の列に基づいて値を合計してから減算する

  28. 28

    パンダの各列の条件に基づく列ごとの値の置換

  29. 29

    パンダの複数の列にわたるIDに基づく合計

ホットタグ

アーカイブ