Python
 Computer >> コンピューター >  >> プログラミング >> Python

PythonでSeries内の欠落要素を検出し、完全な要素を同じSeriesに格納する方法


解決策

この問題を解決するには、以下の手順に従います。

  • pandasのSeriesを定義します。

  • forループを作成し、先頭の要素から末尾の要素まで順番にデータへアクセスします。if条件を設定して、各値がSeries内に存在するかどうかを判定します。

範囲内に存在しない値(欠落している要素)であっても、すでに存在する値であっても、すべてリストに追加していきます。これにより、元のSeriesの先頭から末尾までの抜けを埋めた完全な数列を作成できます。最後にリストをソートし、Seriesとして出力します。

サンプルコード

以下の実装例を見て、より深く理解しましょう。

import pandas as pd
import numpy as np

l = [1, 2, 3, 6, 7]
l1 = []

data = pd.Series(l)
length = len(data)

# 先頭から末尾までの範囲を走査し、全要素を格納する
for i in range(data[0], data[length - 1]):
    if i not in data:
        l1.append(i)   # 欠落していた要素を補完
    else:
        l1.append(i)   # 既存の要素をそのまま追加

l1.sort()
data = pd.Series(l1)
print(data)

出力

0    1
1    2
2    3
3    4
4    5
5    6

このように、元のSeries「[1, 2, 3, 6, 7]」には「4」と「5」が欠落していましたが、実行結果として「1」から「6」までの連続した完全なSeriesが生成されていることがわかります。

なお、Pythonのrange()は終端の値を含まないため、上記のコードでは末尾の「7」が結果に含まれません。末尾の値も含めたい場合は、range(data[0], data[length - 1] + 1)のように終端に1を加えることで対応できます。

  1. PythonでpandasのSeriesから整数要素のみを抽出・フィルタリングする方法

    文字列と整数が混在するpandasのSeriesから、整数要素のみを抽出する方法を、2つの異なるアプローチで解説します。 入力データと期待される出力 入力 ― 次のようなSeriesを想定します。 0 1 1 2 2 python 3 pandas 4 3 5 4 6 5 出力 ― 整数要素のみを抽出した結果は以下の通りです。 0 1 1 2 4 3 5 4 6 5 解法1:type()でデータ型を判定する pandasのSeriesを定義します。 forループとitems()メソッドでインデックスと値を順番に取り

  2. 【Python】ソート済みリストからk番目に欠けている数を効率的に求める方法

    ソートされた重複のない整数リスト nums と整数 k が与えられたとき、リストの最初の要素を基準にして、k番目(0始まりのインデックス)に相当する欠落した数を見つける問題を考えてみましょう。 問題の例 例えば、nums = [5,6,8,10,11]、k = 1 という入力の場合を確認します。このリストには「7」と「9」という2つの数が欠けています。7がインデックス0(1番目)の欠落数、9がインデックス1(2番目)の欠落数に対応するため、k = 1 のときの出力は 9 となります。 解決のためのアプローチ この問題は、隣り合う要素同士の差に注目することで解けます。各間隔にいくつの数が欠け