[解決済み] pandasのDataFrameから空のセルを含む行を削除する
2022-07-01 20:46:16
質問
私は
pd.DataFrame
がありますが、これはいくつかのエクセル・スプレッドシートをパースすることによって作成されました。その中のある列には空のセルがあります。たとえば、以下はその列の頻度に関する出力です。
テナント
.
>>> value_counts(Tenant, normalize=False)
32320
Thunderhead 8170
Big Data Others 5700
Cloud Cruiser 5700
Partnerpedia 5700
Comcast 5700
SDP 5700
Agora 5700
dtype: int64
Tenant がない行を削除しようとしています。
.isnull()
オプションは欠損値を認識しません。
>>> df['Tenant'].isnull().sum()
0
カラムのデータ型が "Object"です。この場合、何が起こっているのでしょうか?どのように私はレコードをドロップすることができますここで テナント が欠落しているレコードを削除するにはどうすればよいですか?
どのように解決するのですか?
Pandas は、値が
np.nan
オブジェクトであれば null と認識し、次のように表示します。
NaN
と表示されます。不足している値はおそらく空の文字列で、PandasはそれをNULLとして認識しません。これを解決するには、空の文字列(または空のセルにあるもの)を次のように変換してください。
np.nan
オブジェクトに変換することができます。
replace()
を使用し、次に
dropna()
を呼び出すと、NULLテナントを持つ行が削除されます。
デモンストレーションのために、いくつかのランダムな値といくつかの空の文字列を含むDataFrameを
Tenants
カラムにいくつかのランダムな値といくつかの空の文字列を含むDataFrameを作成します。
>>> import pandas as pd
>>> import numpy as np
>>>
>>> df = pd.DataFrame(np.random.randn(10, 2), columns=list('AB'))
>>> df['Tenant'] = np.random.choice(['Babar', 'Rataxes', ''], 10)
>>> print df
A B Tenant
0 -0.588412 -1.179306 Babar
1 -0.008562 0.725239
2 0.282146 0.421721 Rataxes
3 0.627611 -0.661126 Babar
4 0.805304 -0.834214
5 -0.514568 1.890647 Babar
6 -1.188436 0.294792 Rataxes
7 1.471766 -0.267807 Babar
8 -1.730745 1.358165 Rataxes
9 0.066946 0.375640
の中の空文字列を置き換えます。
Tenants
カラムにある空文字列を
np.nan
オブジェクトを、このように
>>> df['Tenant'].replace('', np.nan, inplace=True)
>>> print df
A B Tenant
0 -0.588412 -1.179306 Babar
1 -0.008562 0.725239 NaN
2 0.282146 0.421721 Rataxes
3 0.627611 -0.661126 Babar
4 0.805304 -0.834214 NaN
5 -0.514568 1.890647 Babar
6 -1.188436 0.294792 Rataxes
7 1.471766 -0.267807 Babar
8 -1.730745 1.358165 Rataxes
9 0.066946 0.375640 NaN
これでNULL値を落とせるようになりました。
>>> df.dropna(subset=['Tenant'], inplace=True)
>>> print df
A B Tenant
0 -0.588412 -1.179306 Babar
2 0.282146 0.421721 Rataxes
3 0.627611 -0.661126 Babar
5 -0.514568 1.890647 Babar
6 -1.188436 0.294792 Rataxes
7 1.471766 -0.267807 Babar
8 -1.730745 1.358165 Rataxes
関連
-
[解決済み] PandasでDataFrameの行を反復処理する方法
-
[解決済み] 列の値に基づいてDataFrameから行を選択するにはどうすればよいですか?
-
[解決済み] Pandas DataFrameからカラムを削除する
-
[解決済み] Pandasのデータフレームで複数の列を選択する
-
[解決済み] Pandas DataFrameの行数を取得する方法は?
-
[解決済み] 既存のDataFrameに新しい列を追加する方法は?
-
[解決済み] 一行ずつ追加してPandas Dataframeを作成する
-
[解決済み] Pandas DataFrameの特定の列の値がNaNである行を削除する方法
-
[解決済み] Pandasのデータフレームから行を選択するために値のリストを使用する
-
[解決済み】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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] タプルのリストを複数のリストに変換するには?
-
[解決済み] Celeryでタスクのステータスを確認するには?
-
[解決済み] PythonでSelenium WebDriverを使用してテキストを取得する方法
-
[解決済み] ネストしたdictからのPythonデータクラス
-
[解決済み] models.pyを複数のファイルに分割する
-
[解決済み] Seleniumから要素の属性を取得するには?
-
[解決済み] ネストした辞書の項目からpandasのDataFrameを構築する
-
[解決済み] Pythonでファイルがバイナリ(非テキスト)かどうかを検出するにはどうしたらいいですか?
-
[解決済み] readonlyプロパティをmockでモックするには?
-
[解決済み] 関数が受け取るキーワード引数をリストアップできますか?