Pythonはデータフレーム内の行を結合し、値を合計します

ビンビン

私はデータフレームを持っています:

 Type:  Volume:
 Q     10
 Q     20 
 T     10 
 Q     10
 T     20
 T     20
 Q     10

タイプTを1つの行に結合し、2つ(またはそれ以上)のTが連続している場合にのみボリュームを合計したい

すなわち:

 Q    10
 Q    20 
 T    10 
 Q    10 
 T    20+20=40
 Q    10

これを達成する方法はありますか?DataFrame.groupbyうまくいくでしょか?

a.deshpande012

これが役立つと思います。このコードは、連続する任意の数の「T」を処理でき、組み合わせる文字を変更することもできます。コードにコメントを追加して、その機能を説明しました。

https://pastebin.com/FakbnaCj

import pandas as pd

def combine(df):
    combined = [] # Init empty list
    length = len(df.iloc[:,0]) # Get the number of rows in DataFrame
    i = 0
    while i < length:
        num_elements = num_elements_equal(df, i, 0, 'T') # Get the number of consecutive 'T's
        if num_elements <= 1: # If there are 1 or less T's, append only that element to combined, with the same type
            combined.append([df.iloc[i,0],df.iloc[i,1]])
        else: # Otherwise, append the sum of all the elements to combined, with 'T' type
            combined.append(['T', sum_elements(df, i, i+num_elements, 1)])
        i += max(num_elements, 1) # Increment i by the number of elements combined, with a min increment of 1
    return pd.DataFrame(combined, columns=df.columns) # Return as DataFrame

def num_elements_equal(df, start, column, value): # Counts the number of consecutive elements
    i = start
    num = 0
    while i < len(df.iloc[:,column]):
        if df.iloc[i,column] == value:
            num += 1
            i += 1
        else:
            return num
    return num

def sum_elements(df, start, end, column): # Sums the elements from start to end
    return sum(df.iloc[start:end, column])

frame = pd.DataFrame({"Type":   ["Q", "Q", "T", "Q", "T", "T", "Q"],
               "Volume": [10,   20,  10,  10,  20,  20,  10]})
print(combine(frame))

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

2つのデータフレームを結合し、値を合計して最大値を取得します

分類Dev

同じキーを使用してデータフレーム内の行を合計するPython

分類Dev

データフレーム内の値を別のデータフレームと照合し、存在する場合は値を追加します

分類Dev

パンダの特定の列を合計して、複数のデータフレームを結合します

分類Dev

Python:キーのすべての値を1つの行に結合してCSVを解析し、新しいデータフレームを保存します

分類Dev

Rを使用してデータフレーム内の特定の行を合計する方法は?

分類Dev

データフレーム内の前のn行の合計を検索します

分類Dev

データフレーム内の特定の列の重複行を合計します

分類Dev

データフレームをidを含む行と複数回マージする場合は、値の合計を分割します

分類Dev

SQLまたはPythonで行を結合してデータフレーム内の単一行に配置する方法

分類Dev

結合からデータフレームのnan値を入力します

分類Dev

パンダは値を合計する2つのデータフレームをマージします

分類Dev

一意の値のペアごとにデータフレームの行を合計します

分類Dev

Pandasデータフレームで(条件の下で)行を結合します

分類Dev

Rでは、データフレームの行に対して関数を実行し、結果を新しい日付フレームに結合します

分類Dev

同じデータフレーム内の2つを除くすべての観測値を共有する行を合計します

分類Dev

内部結合で2つのデータフレームを結合します

分類Dev

Pythonで2つのデータフレームを左結合する方法、フィルター後の2番目のデータフレームに一致する行が複数ある場合は、最初の行と結合します

分類Dev

毎日のデータフレームの値のカウントまたは合計を取得します

分類Dev

選択した列のすべての値が結果としてNAを返す場合は、データフレームの行を削除します

分類Dev

パンダの列の値を合計し、合計をデータフレームにアタッチまたはマージしますか?

分類Dev

同じデータフレーム内の別の列の値に基づいて、2つの列の値をカウントまたは合計します

分類Dev

R内の複数のファイルを行ごとに結合します。各ファイルはデータフレームの列になります

分類Dev

パンダは複数のデータフレームを合計します

分類Dev

パンダはデータフレームを別のgroupbyデータフレームと結合します

分類Dev

別のデータフレームの行の値に基づいて、1つのデータフレームの列を合計します

分類Dev

R group_byを使用して、データフレームの平均と値の合計を計算します

分類Dev

python、pyspark:pysparkデータフレーム列の値の合計を取得します

分類Dev

PySpark-データフレームの列を合計し、結果をintとして返します

Related 関連記事

  1. 1

    2つのデータフレームを結合し、値を合計して最大値を取得します

  2. 2

    同じキーを使用してデータフレーム内の行を合計するPython

  3. 3

    データフレーム内の値を別のデータフレームと照合し、存在する場合は値を追加します

  4. 4

    パンダの特定の列を合計して、複数のデータフレームを結合します

  5. 5

    Python:キーのすべての値を1つの行に結合してCSVを解析し、新しいデータフレームを保存します

  6. 6

    Rを使用してデータフレーム内の特定の行を合計する方法は?

  7. 7

    データフレーム内の前のn行の合計を検索します

  8. 8

    データフレーム内の特定の列の重複行を合計します

  9. 9

    データフレームをidを含む行と複数回マージする場合は、値の合計を分割します

  10. 10

    SQLまたはPythonで行を結合してデータフレーム内の単一行に配置する方法

  11. 11

    結合からデータフレームのnan値を入力します

  12. 12

    パンダは値を合計する2つのデータフレームをマージします

  13. 13

    一意の値のペアごとにデータフレームの行を合計します

  14. 14

    Pandasデータフレームで(条件の下で)行を結合します

  15. 15

    Rでは、データフレームの行に対して関数を実行し、結果を新しい日付フレームに結合します

  16. 16

    同じデータフレーム内の2つを除くすべての観測値を共有する行を合計します

  17. 17

    内部結合で2つのデータフレームを結合します

  18. 18

    Pythonで2つのデータフレームを左結合する方法、フィルター後の2番目のデータフレームに一致する行が複数ある場合は、最初の行と結合します

  19. 19

    毎日のデータフレームの値のカウントまたは合計を取得します

  20. 20

    選択した列のすべての値が結果としてNAを返す場合は、データフレームの行を削除します

  21. 21

    パンダの列の値を合計し、合計をデータフレームにアタッチまたはマージしますか?

  22. 22

    同じデータフレーム内の別の列の値に基づいて、2つの列の値をカウントまたは合計します

  23. 23

    R内の複数のファイルを行ごとに結合します。各ファイルはデータフレームの列になります

  24. 24

    パンダは複数のデータフレームを合計します

  25. 25

    パンダはデータフレームを別のgroupbyデータフレームと結合します

  26. 26

    別のデータフレームの行の値に基づいて、1つのデータフレームの列を合計します

  27. 27

    R group_byを使用して、データフレームの平均と値の合計を計算します

  28. 28

    python、pyspark:pysparkデータフレーム列の値の合計を取得します

  29. 29

    PySpark-データフレームの列を合計し、結果をintとして返します

ホットタグ

アーカイブ