リスト上の複数のデータフレーム列をフィルタリングする

mattdonders

ランダムなプレーヤー名を含む5つのプレーヤー列を含むデータフレームがあります。プレーヤーのリストを渡して、両方のプレーヤーがその行(5つの列全体)に存在する行のみを返すことができるようにしたいです。

これは、データフレームを生成し、行にいずれかの人物を含む行を正常に除外するコードです。行に両方の人が含まれていることを確認するにはどうすればよいですか?

random_events = ('SHOT', 'MISSED_SHOT', 'GOAL')
random_team = ('Preferred', 'Other')
events = list()

for i in range(6):
    event = dict()
    event['event_type'] = random.choice(random_events)
    event['team'] = random.choice(random_team)
    event['coords_x'] = round(random.uniform(-100, 100), 2)
    event['coords_y'] = round(random.uniform(-42.5, 42.5), 2)
    event['person_1'] = f'Person {random.randint(1, 2)}'
    event['person_2'] = f'Person {random.randint(3, 4)}'
    event['person_3'] = f'Person {random.randint(5, 6)}'
    event['person_4'] = f'Person {random.randint(7, 8)}'
    event['person_5'] = f'Person {random.randint(9, 10)}'
    events.append(event)

df = pd.DataFrame(events)
print(df)


filter_list = ['Person 1', 'Person 3']
filtered_df = df.loc[
    (df['person_1'].isin(filter_list)) |
    (df['person_2'].isin(filter_list)) |
    (df['person_3'].isin(filter_list)) |
    (df['person_4'].isin(filter_list)) |
    (df['person_5'].isin(filter_list))]

print(filtered_df)

これは私が得た結果です-Person1またはPerson3のみの行、およびPerson1とPerson3が返されます。以下の例では、インデックス2の行のみが返されます。

   coords_x  coords_y   event_type  person_1  person_2  person_3  person_4   person_5       team
0     38.82    -39.18  MISSED_SHOT  Person 1  Person 4  Person 6  Person 7   Person 9   Preferred
2     94.43     30.13         GOAL  Person 1  Person 3  Person 5  Person 8   Person 9       Other
3    -68.38    -24.42  MISSED_SHOT  Person 2  Person 3  Person 5  Person 7  Person 10   Preferred
4     99.48     22.79         SHOT  Person 1  Person 4  Person 5  Person 7   Person 9   Preferred

前もって感謝します。

grge

これが一般的なアプローチです。あなたはおそらくあなたの正確な状況に応じてそれで遊んでみたいと思うでしょう。

# Define a list of all of the person columns in the dataframe
person_cols = [f'person_{i}' for i in [1, 2, 3, 4, 5]]

# Which rows contain Person 2 in any column? (creates a series of True or False)
(df[person_cols] == "Person 2").any(axis='columns')

# Which rows contain both Person 2 and Person 3? 
# This time I'm saving the series to use as a selection mask
mask = (
        (df[person_cols] == "Person 2").any(axis='columns') 
      & (df[person_cols] == "Person 3").any(axis='columns') 
)

# show just the rows where the mask above is True
print(df[mask])

編集:

すべてが存在しなければならないプレーヤーの任意のリストのマスクを設定します。

from operator import and_
from functools import reduce

players = ['Player 1', 'Player 3', 'Player 4']
filters = [(df[person_cols] == p).any(axis='columns') for p in players]
mask = reduce(and_, filters, True)

print(df[mask])

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

パンダのデータフレーム行を複数の列値でフィルタリングする

分類Dev

複数の列のNAに基づいてデータフレームをフィルタリングする

分類Dev

複数の条件でデータフレームインデックスをフィルタリングする

分類Dev

複数の列でパンダデータフレームをフィルタリングする方法

分類Dev

複数の列と行をフィルタリングするパンダデータフレーム

分類Dev

タイプリストの列の値でデータフレームをフィルタリングする

分類Dev

分解後、データフレームを複数の列でフィルタリングする

分類Dev

複数のリストを持つデータフレームから値をフィルタリングするためのforループの置き換え

分類Dev

データフレームのリストで数値(n> 3)をフィルタリングする方法は?

分類Dev

R:データフレームの列をリストで「フィルタリング」する

分類Dev

各データフレームの観測数に基づいてデータフレームのリストをフィルタリングする

分類Dev

複数の条件でパンダのデータフレームをフィルタリングする

分類Dev

データのリストに関してデータフレームをフィルタリングする

分類Dev

リストする複数のデータフレーム列

分類Dev

Pythonのデータフレームから複数の条件をフィルタリングする

分類Dev

SelectizeInputShinyで複数の入力のデータフレームをフィルタリングする

分類Dev

複数のブール列を持つパンダデータフレームのフィルタリング

分類Dev

複数の条件をフィルタリングするパンダデータフレーム

分類Dev

データフレームのリストを別のデータフレームのリストでフィルタリングする

分類Dev

Pysparkの複数の列で複数の条件を使用してSparkデータフレームをフィルタリングする

分類Dev

複数の条件でデータフレームをフィルタリングする方法は?

分類Dev

複数の条件でデータフレームをフィルタリングする

分類Dev

複数の条件でデータフレームをフィルタリングする方法は?

分類Dev

複数の条件でデータフレームをフィルタリングする

分類Dev

特定の列の可能なプレフィックスのリストでデータフレームをフィルタリングする

分類Dev

ブール論理を使用して1つのデータフレームの複数の列をマージおよびフィルタリングする

分類Dev

別のデータフレームの複数の条件に基づいてデータフレームをフィルタリングする

分類Dev

リストを使用してパンダのデータフレームをフィルタリングする

分類Dev

異なるデータフレームからの複数の基準でデータフレームをフィルタリングする

Related 関連記事

  1. 1

    パンダのデータフレーム行を複数の列値でフィルタリングする

  2. 2

    複数の列のNAに基づいてデータフレームをフィルタリングする

  3. 3

    複数の条件でデータフレームインデックスをフィルタリングする

  4. 4

    複数の列でパンダデータフレームをフィルタリングする方法

  5. 5

    複数の列と行をフィルタリングするパンダデータフレーム

  6. 6

    タイプリストの列の値でデータフレームをフィルタリングする

  7. 7

    分解後、データフレームを複数の列でフィルタリングする

  8. 8

    複数のリストを持つデータフレームから値をフィルタリングするためのforループの置き換え

  9. 9

    データフレームのリストで数値(n> 3)をフィルタリングする方法は?

  10. 10

    R:データフレームの列をリストで「フィルタリング」する

  11. 11

    各データフレームの観測数に基づいてデータフレームのリストをフィルタリングする

  12. 12

    複数の条件でパンダのデータフレームをフィルタリングする

  13. 13

    データのリストに関してデータフレームをフィルタリングする

  14. 14

    リストする複数のデータフレーム列

  15. 15

    Pythonのデータフレームから複数の条件をフィルタリングする

  16. 16

    SelectizeInputShinyで複数の入力のデータフレームをフィルタリングする

  17. 17

    複数のブール列を持つパンダデータフレームのフィルタリング

  18. 18

    複数の条件をフィルタリングするパンダデータフレーム

  19. 19

    データフレームのリストを別のデータフレームのリストでフィルタリングする

  20. 20

    Pysparkの複数の列で複数の条件を使用してSparkデータフレームをフィルタリングする

  21. 21

    複数の条件でデータフレームをフィルタリングする方法は?

  22. 22

    複数の条件でデータフレームをフィルタリングする

  23. 23

    複数の条件でデータフレームをフィルタリングする方法は?

  24. 24

    複数の条件でデータフレームをフィルタリングする

  25. 25

    特定の列の可能なプレフィックスのリストでデータフレームをフィルタリングする

  26. 26

    ブール論理を使用して1つのデータフレームの複数の列をマージおよびフィルタリングする

  27. 27

    別のデータフレームの複数の条件に基づいてデータフレームをフィルタリングする

  28. 28

    リストを使用してパンダのデータフレームをフィルタリングする

  29. 29

    異なるデータフレームからの複数の基準でデータフレームをフィルタリングする

ホットタグ

アーカイブ