Bekerja dengan dataset NFL dengan panda yang berisi semua statistik pemain ofensif untuk minggu 1 musim 2019. Saat ini saya memiliki tiga DataFrames, satu untuk melewati statistik, statistik bergegas, dan menerima statistik. Saya ingin menggabungkan ketiga DataFrame menjadi satu DataFrame akhir. Masalahnya adalah beberapa pemain muncul di satu atau lebih DataFrames. Misalnya, seorang QB dapat berlari dan mengoper bola, sehingga beberapa QB muncul di DF yang lewat dan DF yang terburu-buru. "Player" adalah indeks umum yang ingin saya gabungkan, tetapi setiap baris yang digandakan juga memiliki nilai 'Pos' dan 'Tm' yang sama. Jadi saya ingin menggabungkan ketiga DataFrame ini pada kolom 'Player', 'Tm' dan 'Pos'.

Saat ini saya memiliki setiap DataFrame yang disimpan ke variabel dalam daftar bernama dfs.

Saya mencoba

df = dfs[0].join(dfs[1:])

Tetapi itu menghasilkan saya DataFrame dengan satu baris - Julian Edelman - satu-satunya pemain yang berlari, mengoper, dan menangkap bola di minggu 1 musim 2019. Cukuplah untuk mengatakan bahwa bukan itu yang saya cari.

Disalin di bawah ini adalah lima baris pertama dari masing-masing DataFrames.

                Pos   Tm PassingYds PassingTD Int PassingAtt Cmp
Player
Lamar Jackson    QB  BAL        324         5   0         20  17
Dak Prescott     QB  DAL        405         4   0         32  25
Robert Griffin   QB  BAL         55         1   0          6   6
Patrick Mahomes  QB  KAN        378         3   0         33  25
Kirk Cousins     QB  MIN         98         1   0         10   8

--------------------------------------------------------------------------
               Pos   Tm Rec Tgt ReceivingYds ReceivingTD
Player
Sammy Watkins   WR  KAN   9  11          198           3
Michael Gallup  WR  DAL   7   7          158           0
John Ross       WR  CIN   7  12          158           2
DeSean Jackson  WR  PHI   8   9          154           2
Marquise Brown  WR  BAL   4   5          147           2
---------------------------------------------------------------------------
                    Pos   Tm RushingAtt RushingYds RushingTD
Player
Marlon Mack          RB  IND         25        174         1
Christian McCaffrey  RB  CAR         19        128         2
Saquon Barkley       RB  NYG         11        120         0
Dalvin Cook          RB  MIN         21        111         2
Mark Ingram          RB  BAL         14        107         2

2
Benjamin Dominguez 24 Januari 2020, 22:19

2 jawaban

Jawaban Terbaik

Anda sedang mencari gabungan luar dengan Player, Pos dan Tm sebagai indeks. Pertama, tambahkan ini ke indeks Anda, lalu panggil upaya Anda saat ini dengan jenis gabungan outer


dfs = [d.set_index(['Pos', 'Tm'], append=True) for d in dfs]
dfs[0].join(dfs[1:], how='outer')
                             PassingYds  PassingTD  Int  PassingAtt   Cmp  Rec   Tgt  ReceivingYds  ReceivingTD  RushingAtt  RushingYds  RushingTD
Player              Pos Tm
Christian McCaffrey RB  CAR         NaN        NaN  NaN         NaN   NaN  NaN   NaN           NaN          NaN        19.0       128.0        2.0
Dak Prescott        QB  DAL       405.0        4.0  0.0        32.0  25.0  NaN   NaN           NaN          NaN         NaN         NaN        NaN
Dalvin Cook         RB  MIN         NaN        NaN  NaN         NaN   NaN  NaN   NaN           NaN          NaN        21.0       111.0        2.0
DeSean Jackson      WR  PHI         NaN        NaN  NaN         NaN   NaN  8.0   9.0         154.0          2.0         NaN         NaN        NaN
John Ross           WR  CIN         NaN        NaN  NaN         NaN   NaN  7.0  12.0         158.0          2.0         NaN         NaN        NaN
Kirk Cousins        QB  MIN        98.0        1.0  0.0        10.0   8.0  NaN   NaN           NaN          NaN         NaN         NaN        NaN
Lamar Jackson       QB  BAL       324.0        5.0  0.0        20.0  17.0  NaN   NaN           NaN          NaN         NaN         NaN        NaN
Mark Ingram         RB  BAL         NaN        NaN  NaN         NaN   NaN  NaN   NaN           NaN          NaN        14.0       107.0        2.0
Marlon Mack         RB  IND         NaN        NaN  NaN         NaN   NaN  NaN   NaN           NaN          NaN        25.0       174.0        1.0
Marquise Brown      WR  BAL         NaN        NaN  NaN         NaN   NaN  4.0   5.0         147.0          2.0         NaN         NaN        NaN
Michael Gallup      WR  DAL         NaN        NaN  NaN         NaN   NaN  7.0   7.0         158.0          0.0         NaN         NaN        NaN
Patrick Mahomes     QB  KAN       378.0        3.0  0.0        33.0  25.0  NaN   NaN           NaN          NaN         NaN         NaN        NaN
Robert Griffin      QB  BAL        55.0        1.0  0.0         6.0   6.0  NaN   NaN           NaN          NaN         NaN         NaN        NaN
Sammy Watkins       WR  KAN         NaN        NaN  NaN         NaN   NaN  9.0  11.0         198.0          3.0         NaN         NaN        NaN
Saquon Barkley      RB  NYG         NaN        NaN  NaN         NaN   NaN  NaN   NaN           NaN          NaN        11.0       120.0        0.0
1
user3483203 24 Januari 2020, 19:33

Lebih baik untuk mengkonversi data berikut dalam format .CSV dan kemudian menggabungkan data dan kemudian Anda dapat mengimpor dalam bentuk dataframe.

-1
Ṃųỻịgǻňạcểơửṩ 24 Januari 2020, 19:57