[解決済み] Pandasでゼロだけを含むカラムを削除するには?
2022-11-06 03:17:10
質問
現在、値として1と0を持つ列からなるデータフレームを持っています。私は列を繰り返し、0だけで構成されているものを削除したいと思います。以下は、私がこれまでに試したことです。
ones = []
zeros = []
for year in years:
for i in range(0,599):
if year[str(i)].values.any() == 1:
ones.append(i)
if year[str(i)].values.all() == 0:
zeros.append(i)
for j in ones:
if j in zeros:
zeros.remove(j)
for q in zeros:
del year[str(q)]
in which yearsは私が分析している様々な年のdataframeのリストで、onesはその中に1がある列からなり、zerosはすべての0を含む列のリストです。条件に基づいて列を削除する良い方法はないでしょうか?何らかの理由で、私はones列がzerosリストにもあるかどうかをチェックし、すべてのゼロ列のリストを得るためにzerosリストからそれらを削除する必要があります。
どのように解決するのですか?
df.loc[:, (df != 0).any(axis=0)]
以下はその仕組みの説明です。
In [74]: import pandas as pd
In [75]: df = pd.DataFrame([[1,0,0,0], [0,0,1,0]])
In [76]: df
Out[76]:
0 1 2 3
0 1 0 0 0
1 0 0 1 0
[2 rows x 4 columns]
df != 0
が真であるブール値のDataFrameを作成します。
df
がゼロでない場合に真となる。
In [77]: df != 0
Out[77]:
0 1 2 3
0 True False False False
1 False False True False
[2 rows x 4 columns]
(df != 0).any(axis=0)
は、どの列が非ゼロ項目を持っているかを示すブーリアン系列を返します。(この
any
演算は0軸に沿った値、つまり行に沿った値を1つの真偽値に集約する。したがって、結果は各列に対して1つの真偽値となります)。
In [78]: (df != 0).any(axis=0)
Out[78]:
0 True
1 False
2 True
3 False
dtype: bool
そして
df.loc
はそれらのカラムを選択するために使用することができます。
In [79]: df.loc[:, (df != 0).any(axis=0)]
Out[79]:
0 2
0 1 0
1 0 1
[2 rows x 2 columns]
ゼロカラムを削除するには、次のように再割り当てします。
df
:
df = df.loc[:, (df != 0).any(axis=0)]
関連
-
[解決済み] PandasでDataFrameの行を反復処理する方法
-
[解決済み] 列の値に基づいてDataFrameから行を選択するにはどうすればよいですか?
-
[解決済み] Pythonでファイルやフォルダを削除する方法は?
-
[解決済み] Pandasのカラム名のリネーム
-
[解決済み] Pandas DataFrameからカラムを削除する
-
[解決済み] Pandas DataFrameの行数を取得する方法は?
-
[解決済み] 既存のDataFrameに新しい列を追加する方法は?
-
[解決済み] pandasを使った "大量データ "ワークフロー【終了しました
-
[解決済み】Pandas DataFrameのカラムヘッダからリストを取得する。
-
[解決済み】pandasでカラムの種類を変更する
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] PandasでDataFrameの行を列の値に基づいて削除する
-
[解決済み] 前月の日時オブジェクトを返す
-
[解決済み] Flaskで1時間ごとに関数を実行するようにスケジュールするには?
-
[解決済み] django.db.migrations.exceptions.InconsistentMigrationHistory
-
[解決済み] PyMongoで.sortを使用する
-
[解決済み] サブフォルダからのインポートモジュール
-
[解決済み] subprocess.run()の出力を抑制またはキャプチャするには?
-
[解決済み] Pythonで、ウェブサイトが404か200かを確認するためにurllibをどのように使用しますか?
-
[解決済み] Pythonの文字列の前にあるbという接頭辞は何を意味するのですか?
-
[解決済み] virtualenvsはどこに作成するのですか?