[解決済み] パンダ。連続した重複を削除する
2023-02-01 13:01:12
質問
pandasで連続した重複だけをドロップする最も効率的な方法は何ですか?
drop_duplicatesはこれを与えます。
In [3]: a = pandas.Series([1,2,2,3,2], index=[1,2,3,4,5])
In [4]: a.drop_duplicates()
Out[4]:
1 1
2 2
4 3
dtype: int64
しかし、私はこれが欲しいのです。
In [4]: a.something()
Out[4]:
1 1
2 2
4 3
5 2
dtype: int64
どのように解決するのですか?
使用方法
shift
:
a.loc[a.shift(-1) != a]
Out[3]:
1 1
3 2
4 3
5 2
dtype: int64
つまり、上記ではブーリアン・クリテリアを使用しているので、データフレームを-1行シフトしたデータフレームと比較して、マスクを作成しています。
別の方法として
diff
:
In [82]:
a.loc[a.diff() != 0]
Out[82]:
1 1
2 2
4 3
5 2
dtype: int64
しかし、これは行数が多い場合、本来の方法よりも遅くなります。
更新
Bjarke Ebert が微妙なミスを指摘してくれたおかげで、実際には
shift(1)
を使うべきか、あるいは単に
shift()
のように、デフォルトはピリオド1であるため、これは連続した最初の値を返します。
In [87]:
a.loc[a.shift() != a]
Out[87]:
1 1
2 2
4 3
5 2
dtype: int64
インデックスの値の違いに注目してください。
関連
-
[解決済み] PandasでDataFrameの行を反復処理する方法
-
[解決済み] Pandasのカラム名のリネーム
-
[解決済み] Pandas DataFrameからカラムを削除する
-
[解決済み] 複数行の長い文字列を作成するためのPythonicな方法
-
[解決済み] JSONファイルをprettyprintする方法は?
-
[解決済み] pandasを使った "大量データ "ワークフロー【終了しました
-
[解決済み] PandasでDataFrameの行を列の値に基づいて削除する
-
[解決済み] Pandas DataFrameの値がNaNであるかどうかを確認する方法
-
[解決済み】PandasでSettingWithCopyWarningに対処する方法
-
[解決済み] スペースがないテキストを単語のリストに分割する方法
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] PILからopenCVフォーマットへの変換
-
[解決済み] django.db.migrations.exceptions.InconsistentMigrationHistory
-
[解決済み] SQLAlchemy: 日付フィールドをフィルタリングする方法は?
-
[解決済み] 文字列から先頭と末尾のスペースを削除するには?
-
[解決済み] サブフォルダからのインポートモジュール
-
[解決済み] Cythonのコードを含むPythonパッケージはどのように構成すればよいのでしょうか?
-
[解決済み] Django で全てのリクエストヘッダを取得するにはどうすれば良いですか?
-
[解決済み] CSVデータを処理する際、1行目のデータを無視する方法を教えてください。
-
[解決済み] Pythonで、ウェブサイトが404か200かを確認するためにurllibをどのように使用しますか?
-
[解決済み] あるメソッドが複数の引数のうち1つの引数で呼び出されたことを保証する