パンダ-サイズ1の配列のみをPythonスカラーに変換できます

8ビットボルヘス

2つのデータフレームがあります。

df_melt

    MatchID GameWeek        Date                      Team  Home               AgainstTeam
0     46605        1  2019-08-09                 Liverpool  Home              Norwich City
1     46605        1  2019-08-09              Norwich City  Away                 Liverpool
2     46606        1  2019-08-10           AFC Bournemouth  Home          Sheffield United
3     46606        1  2019-08-10          Sheffield United  Away           AFC Bournemouth
4     46607        1  2019-08-10                   Burnley  Home               Southampton
..      ...      ...         ...                       ...   ...                       ...
533   46871       27  2020-02-23                   Watford  Away         Manchester United
534   46872       27  2020-02-22          Sheffield United  Home  Brighton and Hove Albion
535   46872       27  2020-02-22  Brighton and Hove Albion  Away          Sheffield United
536   46873       27  2020-02-22               Southampton  Home               Aston Villa
537   46873       27  2020-02-22               Aston Villa  Away               Southampton

そして、プレーヤーの試合の場合、df_pm

                                       Player  GameWeek  Minutes  ... CloseShotCreated TotalShotCreated  HeadersCreated
PlayerMatchesDetailID                                             ...                                                  
1                                     Alisson         1       90  ...                0                0               0
2                             Virgil van Dijk         1       90  ...                0                0               0
3                                Joseph Gomez         1       90  ...                0                1               0
4                            Andrew Robertson         1       90  ...                0                1               0
5                      Trent Alexander-Arnold         1       90  ...                3                3               1
...                                       ...       ...      ...  ...              ...              ...             ...
15053                             Matty James        22        0  ...                0                0               0
15054                             Matty James        23        0  ...                0                0               0
15055                             Matty James        24        0  ...                0                0               0
15056                             Matty James        25        0  ...                0                0               0
15057                             Matty James        26        0  ...                0                0               0

今、私は繰り返して、次のようなdf_pmいくつかの条件が与えられたアイテムを見つけようとしていますdf_melt

#Instantiate an empty list
match_ids = []
home_away = []
dates = []

#For each row in the player matches dataframe...
for row in df_pm.itertuples():
    #Look up the match id from the team matches dataframe
    team = row.ForTeam
    againstteam = row.AgainstTeam
    gameweek = row.GameWeek

    match_id = df_melt.loc[(df_melt['GameWeek']==gameweek)
                          &(df_melt['Team']==team)
                          &(df_melt['AgainstTeam']==againstteam),
                          'MatchID'].item()

    date = df_melt.loc[(df_melt['GameWeek']==gameweek)
                          &(df_melt['Team']==team)
                          &(df_melt['AgainstTeam']==againstteam),
                          'Date'].item()

    home = df_melt.loc[(df_melt['GameWeek']==gameweek)
                          &(df_melt['Team']==team)
                          &(df_melt['AgainstTeam']==againstteam),
                          'Home'].item()

    #Add it to the list
    match_ids.append(match_id)
    home_away.append(home)
    dates.append(date)

ただし、すべての反復で、「team」、「againstteam」、「gameweek」を出力しても、次のエラーが発生します。

Traceback (most recent call last):
  File "tableau_data_generation.py", line 155, in <module>
    'MatchID'].item()
  File "/Users/me/anaconda2/envs/data_science/lib/python3.7/site-packages/pandas/core/base.py", line 652, in item
    return self.values.item()
ValueError: can only convert an array of size 1 to a Python scalar

...アイテムがないことを示唆しています。

しかし、データフレーム全体を印刷するとdf_melt、次のようになります。

with pd.option_context('display.max_rows', None, 'display.max_columns', None):  # more options can be specified also
    print(df_melt, df_melt.shape)

(538, 6)はすべてのデータがそこにあり、欠陥がないことを確認できます。


タイプを確認すると、次のように表示されます。

df_melt

MatchID        object
GameWeek       object
Date           object
Team           object
Home           object
AgainstTeam    object

df_pm

Player                 object
GameWeek                int64
Minutes                 int64
ForTeam                object
AgainstTeam            object
Goals                   int64
ShotsOnTarget           int64
ShotsInBox              int64
CloseShots              int64
TotalShots              int64
Headers                 int64
GoalAssists             int64
ShotOnTargetCreated     int64
ShotInBoxCreated        int64
CloseShotCreated        int64
TotalShotCreated        int64
HeadersCreated          int64

したがって、ここにはタイプの不一致があります。


反復が実行される前に次のコード行を追加すると、次のようになります。

df_melt['GameWeek'] = pd.to_numeric(df_melt['GameWeek'])

の最初の行に数十の「match_id」、「date」、および「home」を正常に出力しましたがdf_pm.itertuples()(そのを追加する前は印刷されていませんでした)、同じエラーで2番目の行で再び中断しました。

ValueError: can only convert an array of size 1 to a Python scalar

これを修正するにはどうすればよいですか?


:これは上記のコードに従うものです。

def matchid_lookup(player, date, team, gameweek):
    try:
        try:
            return df_pm.loc[(df_pm['Date']==date)
                        &(df_pm['Player']==player), 'MatchID'].item()
        except:
            return df_pm.loc[(df_pm['Date']==date)
                        &(df_pm['ForTeam']==team), 'MatchID'].iloc[0]
    except:
        return df_pm.loc[(df_pm['GameWeek']==gameweek)
                        &(df_pm['Player']==player), 'MatchID'].item()

#Declare the list as a column in the player matches df
df_pm['MatchID']=match_ids
df_pm['Date']=pd.to_datetime(dates)
df_pm['Home']=home_away
df_pm['Position']=df_pm['Player'].map(pos_lookup)

#Get the match IDs column first in the dataframe
cols = list(df_pm.columns)
new_cols = ['MatchID', 'Date', 'Home','Position'] + cols[:-4]
df_pm = df_pm[new_cols]

#Bring in stats from api table
#First, get key identifiers into the api table to facilitate joining
df_api_stats['Player'] = df_api_stats['PlayerID'].map(player_lookup)
df_api_stats['Team'] = df_api_stats['PlayerID'].map(team_lookup)    
df_api_stats['MatchID'] = df_api_stats.apply(lambda x: matchid_lookup(x['Player'],
                                                                      x['Date'],
                                                                      x['Team'],
                                                                      x['GameWeek']), axis=1)
api_cols = ['Player', 'MatchID', 'BPS', 'MinutesPlayed',
            'CleanSheet', 'Saves', 'NetTransfersIn',
            'SelectedBy', 'Points', 'Price']

df_api_cols = df_api_stats[api_cols]
Tボーンステーキを一枚ください

に含まれdf_api_statsていない日付がいくつかあるのでdf_pm、次のように表示できます。

print (set(pd.to_datetime(df_api_stats['Date'])) - set(pd.to_datetime(df_pm['Date'])))
{Timestamp('2020-01-29 00:00:00'),
 Timestamp('2020-02-28 00:00:00'),
 Timestamp('2020-02-29 00:00:00'),
 Timestamp('2020-03-01 00:00:00'),
 Timestamp('2020-03-07 00:00:00'),
 Timestamp('2020-03-08 00:00:00'),
 Timestamp('2020-03-09 00:00:00')}

欠落している値をどうするかはわかりませんが、メソッドが失敗しないように、exceptを追加して、一致する可能性がない場合はnanを返すことができます。

def matchid_lookup(player, date, team, gameweek):
    try:
        try:
            return df_pm.loc[(df_pm['Date']==date)
                        &(df_pm['Player']==player), 'MatchID'].item()
        except:
            return df_pm.loc[(df_pm['Date']==date)
                        &(df_pm['ForTeam']==team), 'MatchID'].iloc[0]
    except:
        try:
            return df_pm.loc[(df_pm['GameWeek']==gameweek)
                            &(df_pm['Player']==player), 'MatchID'].item()
        except:
            return np.nan

注:以前にfor問題を引き起こしループの直前に、これを行うことを忘れないでください:

df_melt['GameWeek'] = pd.to_numeric(df_melt['GameWeek'])
df_melt[['Team', 'AgainstTeam']] = df_melt[['Team', 'AgainstTeam']]\
                                          .replace('AFC Bournemouth', 'Bournemouth')

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

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

編集
0

コメントを追加

0

関連記事

パンダはサイズ1の配列のみをPythonスカラーに変換できます

リストを配列に変換できません:ValueError:1つの要素テンソルのみをPythonスカラーに変換できます

Python numpyエラー:整数スカラー配列のみをスカラーインデックスに変換できます

パンダで数値データフレームを整数に変換する際のエラー-「整数スカラー配列のみがスカラーインデックスに変換できます」

TypeError:整数スカラー配列のみがスカラーインデックスに変換できます

整数スカラー配列のみがスカラーインデックスに変換できます

「整数スカラー配列のみがスカラーインデックスに変換できます」

(Python)TypeError:整数スカラー配列のみをスカラーインデックスに変換できます

Python TypeError:整数スカラー配列のみをスカラーインデックスに変換できます

Python TypeError:整数スカラー配列のみをスカラーインデックスに変換できます

パンダ:データフレームをマージしようとすると、「TypeError:整数のスカラー配列のみをスカラーインデックスに変換できます」というメッセージが表示されます

TypeError:RMSEの計算中に、整数のスカラー配列のみをスカラーインデックスに変換できます

1D numpy concatenate:TypeError:整数スカラー配列のみがスカラーインデックスに変換できます

TypeError:KFold内では、整数のスカラー配列のみをスカラーインデックスに変換できます

TypeError:KFoldでは、整数のスカラー配列のみをスカラーインデックスに変換できます。

このTypeErrorを解決する方法:整数スカラー配列のみがスカラーインデックスに変換できます

list(map)エラー:TypeError:整数スカラー配列のみをスカラーインデックスに変換できます

エラーのみ整数スカラー配列をスカラーインデックスに変換できます

Hill-RSA暗号化の「TypeError:整数スカラー配列のみをスカラーインデックスに変換できます」

Matplotlib TypeErrorを解決する方法:整数スカラー配列のみをスカラーインデックスに変換できます

Python DataFrame TypeError:整数スカラー配列のみがスカラーインデックスに変換できます

Pythonでgroupby列をカウントするときのエラー-TypeError:整数スカラー配列のみをスカラーインデックスに変換できます

TypeError:kfold cvを試行している間、整数スカラー配列のみをスカラーインデックスに変換できます

sklearn LabelEncoder reverse_transform TypeError:整数スカラー配列のみをスカラーインデックスに変換できます

'TypeError:整数スカラー配列のみをスカラーインデックスに変換できます' TensorFlow Object Detection API

rr.reshape(rr、(a、b))TypeError:整数スカラー配列のみをスカラーインデックスに変換できます。

パンダでローリング適用すると、「TypeError:長さ1の配列のみがPythonスカラーに変換できます」と表示されます

コード内のエラー(整数のスカラー配列のみがスカラーインデックスに変換できます)

numpy配列のリストを1つの要素のパンダシリーズに変換します

TOP 一覧

  1. 1

    Python / SciPyのピーク検出アルゴリズム

  2. 2

    セレンのモデルダイアログからテキストを抽出するにはどうすればよいですか?

  3. 3

    tkinterウィンドウを閉じてもPythonプログラムが終了しない

  4. 4

    androidsoongビルドシステムによるネイティブコードカバレッジ

  5. 5

    ZScalerと証明書の問題により、Dockerを使用できません

  6. 6

    Reactでclsxを使用する方法

  7. 7

    VisualStudioコードの特異点/ドッカー画像でPythonインタープリターを使用するにはどうすればよいですか?

  8. 8

    二次導関数を数値計算するときの大きな誤差

  9. 9

    Ansibleで複数行のシェルスクリプトを実行する方法

  10. 10

    STSでループプロセス「クラスパス通知の送信」のループを停止する方法

  11. 11

    ビュー用にサイズ変更した後の画像の高さと幅を取得する方法

  12. 12

    Three.js indexed BufferGeometry vs. InstancedBufferGeometry

  13. 13

    __init__。pyファイルの整理中に循環インポートエラーが発生しました

  14. 14

    三項演算子良い練習の代わりとしてOptional.ofNullableを使用していますか?

  15. 15

    エンティティIDを含む@RequestBody属性をSpringの対応するエンティティに変換します

  16. 16

    Spring Boot Filter is not getting invoked if remove @component in fitler class

  17. 17

    値間の一致を見つける最も簡単な方法は何ですか

  18. 18

    reCAPTCHA-エラーコード:ユーザーの応答を検証するときの「missing-input-response」、「missing-input-secret」(POSTの詳細がない)

  19. 19

    Rパッケージ「AppliedPredictiveModeling」のインストール中にエラーが発生しました

  20. 20

    画像変更コードを実行してもボタンの画像が変更されない

  21. 21

    好き/愛の関係のためのデータベース設計

ホットタグ

アーカイブ