Pandas DataFrame: 条件に基づいて列内のすべての値を置き換える 質問する

Pandas DataFrame: 条件に基づいて列内のすべての値を置き換える 質問する

次のような単純な DataFrame があります。

チーム 最初のシーズン 合計ゲーム数
0 ダラス・カウボーイズ 1960 894
1 シカゴ・ベアーズ 1920 1357
2 グリーンベイ・パッカーズ 1921 1339
3 マイアミドルフィンズ 1966 792
4 ボルチモア・レイブンズ 1996 326
5 サンフランシスコ 49ers 1950 1003

列からすべての値を選択しFirst Season、1990 を超える値を 1 に置き換えます。この例では、ボルチモア レイブンズのみ 1996 が 1 に置き換えられます (残りのデータはそのままです)。

私は以下を使用しました:

df.loc[(df['First Season'] > 1990)] = 1

ただし、「最初のシーズン」列の値だけでなく、その行のすべての値が 1 に置き換えられます。

その列の値だけを置き換えるにはどうすればよいですか?

ベストアンサー1

次の列を選択する必要があります:

In [41]:
df.loc[df['First Season'] > 1990, 'First Season'] = 1
df

Out[41]:
                 Team  First Season  Total Games
0      Dallas Cowboys          1960          894
1       Chicago Bears          1920         1357
2   Green Bay Packers          1921         1339
3      Miami Dolphins          1966          792
4    Baltimore Ravens             1          326
5  San Franciso 49ers          1950         1003

したがって、ここでの構文は次のようになります。

df.loc[<mask>(here mask is generating the labels to index) , <optional column(s)> ]

確認するにはドキュメントそしてまたパンダまで10分これは意味論を示している

編集

ブール インジケーターを生成する場合は、ブール条件を使用してブール Series を生成し、dtype を にキャストするだけで、と がそれぞれとにint変換されます。TrueFalse10

In [43]:
df['First Season'] = (df['First Season'] > 1990).astype(int)
df

Out[43]:
                 Team  First Season  Total Games
0      Dallas Cowboys             0          894
1       Chicago Bears             0         1357
2   Green Bay Packers             0         1339
3      Miami Dolphins             0          792
4    Baltimore Ravens             1          326
5  San Franciso 49ers             0         1003

おすすめ記事