relativedelta使用時のilocについて


`iloc`について教えてください。

`for i in range(len(predict_data)):` とした場合、`i` に入るのは整数なので、`.iloc[i]`
とすべきだと思ったのですが、解答では `iloc` を使わず、下記のようになっておりました。  
なぜ、`iloc` 省略なのでしょうか。  
できれば初学者用に分かりやすく教えていただけると幸いです。  
よろしくお願いいたします。

[code]

    for i in range(len(predict_data)):
    　　    delta = relativedelta(predict_data["now_date"][i], predict_data["start_date"][i])
    
[/code]




質問のやり方は行番号では無く「インデックス値」によるアクセスです。  
インデックス値が`0からの連番`で付加されているため、行番号で行を指定したのと同等の処理になった訳です。

pandasのドキュメントでは以下に記述されています。  
[Indexing and selecting
data](https://pandas.pydata.org/docs/user_guide/indexing.html)

> **Note**  
>  The Python and NumPy indexing operators`[]`and attribute operator`.`provide
> quick and easy access to pandas data structures across a wide range of use
> cases.

[Basics](https://pandas.pydata.org/docs/user_guide/indexing.html#basics)

> the primary function of indexing with`[]`(a.k.a.`__getitem__`for those
> familiar with implementing class behavior in Python) is selecting out lower-
> dimensional slices.
>
> **Object Type** | **Selection** | **Return Value Type**  
> ---|---|---  
> Series | `series[label]` | scalar value  
> DataFrame | `frame[colname]` | `Series` corresponding to colname  
  
こんな日本語の解説記事もあります。  
[インデックスに基づく選択 - pandas – Series のインデックス操作まとめ](https://pystyle.info/pandas-
indexing-series/#outline__4_1)

* * *

質問の出展はこちらだと思われますが  
[Python実践データ分析100本ノック
（単行本）](https://www.shuwasystem.co.jp/book/9784798058757.html)

> 第4章 顧客の行動を予測する10本 ノック  
>  ノック37：特徴となる変数を付与しよう  
>  [サンプルファイルのダウンロード -
> Python実践データ分析100本ノック](https://www.shuwasystem.co.jp/support/7980html/5875.html)

他に多数の人が記事を書いていて例えばこんな解説があります  
[【Python実践データ分析100本ノック】ノック36－40](https://minarai-engi.com/python-
analytics100knock-8/)

質問の行近辺の`predict_data.head()`の結果や、直前の`predict_data["period"]=None`が実行された時点で単に`predict_data["now_date"]`とか`predict_data["start_date"]`として内容を表示してみれば分かりますが、各データには`0`～`15112`という`数値(整数)によるインデックス`が付いています。

[code]

    >>> predict_data.head()
           年月 customer_id  count_pred  count_0  count_1  count_2  count_3  count_4  count_5
    0  201810    AS002855           3      7.0      3.0      5.0      5.0      5.0      4.0
    1  201810    AS009373           5      6.0      6.0      7.0      4.0      4.0      3.0
    2  201810    AS015315           4      7.0      3.0      6.0      3.0      3.0      6.0
    3  201810    AS015739           5      6.0      5.0      8.0      6.0      5.0      7.0
    4  201810    AS019860           7      5.0      7.0      4.0      6.0      8.0      6.0
    ...
    >>> predict_data['now_date']
    0       2018-10-01
    1       2018-10-01
    2       2018-10-01
    3       2018-10-01
    4       2018-10-01
               ...
    15108   2019-03-01
    15109   2019-03-01
    15110   2019-03-01
    15111   2019-03-01
    15112   2019-03-01
    Name: now_date, Length: 15113, dtype: datetime64[ns]
    ...
    >>> predict_data['start_date']
    0       2016-11-01
    1       2015-11-01
    2       2015-07-01
    3       2017-06-01
    4       2017-10-01
               ...
    15108   2015-09-01
    15109   2018-09-01
    15110   2016-06-01
    15111   2017-03-01
    15112   2017-04-01
    Name: start_date, Length: 15113, dtype: datetime64[ns]
    
[/code]

なので、`predict_data["now_date"][i]`とか`predict_data["start_date"][i]`とすると、各Seriesデータ中の`iの数値をインデックス値に持つデータ`にアクセス出来ることになります。

