次のような単純な 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
変換されます。True
False
1
0
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