[解決済み] Pandas DataFrameの無効な値をNoneに置き換える。
2022-12-30 01:10:28
質問
で値を置き換える方法はありますか?
None
で値を置き換える方法はありますか?
を使うことができます。
df.replace('pre', 'post')
で、値を別の値に置き換えることができますが、これを
None
の値で置き換えようとすると、変な結果になります。
では、例を挙げてみましょう。
df = DataFrame(['-',3,2,5,1,-5,-1,'-',9])
df.replace('-', 0)
で、成功した結果を返します。
しかし
df.replace('-', None)
で、次のような結果を返します。
0
0 - // this isn't replaced
1 3
2 2
3 5
4 1
5 -5
6 -1
7 -1 // this is changed to `-1`...
8 9
なぜこのような奇妙な結果が返されるのでしょうか?
このデータフレームをMySQLのデータベースに流し込みたいのですが、そのためには
NaN
の値を入れることはできず、代わりに
None
. 確かに、まず
'-'
を
NaN
に変換し、さらに
NaN
を
None
に変更する必要がありますが、なぜデータフレームがこのようなひどい動作をするのか知りたいのです。
Python 2.7とOS X 10.8上のpandas 0.12.0 devでテストしています。Pythonは PythonはOS Xにプリインストールされているバージョンで、pandasはSciPy Superpackスクリプトでインストールしました。
どのように解決するのですか?
実はこれ、pandasの最新バージョンではTypeErrorが発生します。
df.replace('-', None)
TypeError: If "to_replace" and "value" are both None then regex must be a mapping
リストか辞書のどちらかを渡すことで可能です。
In [11]: df.replace('-', df.replace(['-'], [None]) # or .replace('-', {0: None})
Out[11]:
0
0 None
1 3
2 2
3 5
4 1
5 -5
6 -1
7 None
8 9
しかし、NoneよりもNaNを使うことをお勧めします。
In [12]: df.replace('-', np.nan)
Out[12]:
0
0 NaN
1 3
2 2
3 5
4 1
5 -5
6 -1
7 NaN
8 9
関連
-
[解決済み] PandasでDataFrameの行を反復処理する方法
-
[解決済み] 列の値に基づいてDataFrameから行を選択するにはどうすればよいですか?
-
[解決済み] Pandas DataFrameからカラムを削除する
-
[解決済み] Pandasのデータフレームで複数の列を選択する
-
[解決済み] Pandas DataFrameの行数を取得する方法は?
-
[解決済み] 一行ずつ追加してPandas Dataframeを作成する
-
[解決済み] Pandas DataFrameの特定の列の値がNaNである行を削除する方法
-
[解決済み] Pandasのデータフレームから行を選択するために値のリストを使用する
-
[解決済み] Pandasシリーズ/DataFrame全体をプリティプリントする
-
[解決済み】Pandas DataFrameのカラムヘッダからリストを取得する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Pythonのマルチプロセッシングプールimap_unorderedの呼び出しの進捗を表示しますか?
-
[解決済み] PILからopenCVフォーマットへの変換
-
[解決済み] 文字列のリストを内容に基づいてフィルタリングする
-
[解決済み] Django 1.7で初期マイグレーションからマイグレートバックする方法は?
-
[解決済み] matplotlib でプロットの軸、目盛、ラベルの色を変更する方法
-
[解決済み] Pythonで、ウェブサイトが404か200かを確認するためにurllibをどのように使用しますか?
-
[解決済み] Pythonの文字列の前にあるbという接頭辞は何を意味するのですか?
-
[解決済み] djangoのQueryDictをPythonのDictに変更するには?
-
[解決済み] Alembicアップグレードスクリプトでインサートやアップデートを実行するにはどうすればよいですか?
-
[解決済み] NaNとNoneの違いは何ですか?