非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

【Python】DataFrameに長さの異なる配列を最終行に揃えて追加する方法

   

Pythonでデータ処理を行う際、データフレームに別の配列を新しい列として追加することはよくあります。しかし、配列の長さがデータフレームより短い場合どのように処理すればよいでしょうか。本記事では、pandas と numpy を使って、配列をデータフレームの行数に揃え、最終行に合わせて新しい列として追加する方法を解説します。

実装例

import pandas as pd
import numpy as np

# サンプルデータの作成(行数は動的に決定)
num_rows_df = np.random.randint(150, 300)  # データフレームの行数(例: 150~300の範囲)
num_rows_array = np.random.randint(50, 150)  # 配列の行数(例: 50~150の範囲)

df = pd.DataFrame(np.random.rand(num_rows_df, 5), columns=['A', 'B', 'C', 'D', 'E'])
array = np.random.rand(num_rows_array)

# 必要なパディングの計算
padding_size = max(0, len(df) - len(array))

# 配列の長さをデータフレームの行数に揃える
padded_array = np.pad(array, (padding_size, 0), 'constant', constant_values=0)

# データフレームに新しい列として追加
df['New_Column'] = padded_array

# 結果表示
print(f"データフレームの行数: {len(df)}")
print(f"配列の行数: {len(array)}")
print(df)
 

 

解説

動的な行数の決定
  • num_rows_dfnum_rows_array をランダムに生成していますが、実際にはプログラムの他の部分から値を受け取るように変更可能です。
パディングサイズの計算
  • 配列をデータフレームの行数に揃えるために、必要な先頭の埋める要素数を計算します。
  • padding_size = max(0, len(df) – len(array)) は、配列の長さがすでにデータフレームの行数以上の場合に備えて 0 を下限とします。
np.pad:
  • パディング処理を動的に行い、配列の長さを揃えます。

 

出力例

データフレームの行数: 176
配列の行数: 132
            A         B         C         D         E  New_Column
0    0.471531  0.802859  0.104985  0.467619  0.283104    0.000000
1    0.165500  0.064296  0.411609  0.340972  0.151637    0.000000
2    0.853551  0.032499  0.361170  0.912847  0.911408    0.000000
3    0.771829  0.033213  0.384033  0.815594  0.267326    0.000000
4    0.329870  0.123436  0.542835  0.186075  0.656014    0.000000
..        ...       ...       ...       ...       ...         ...
171  0.560800  0.534783  0.329657  0.548020  0.767669    0.313598
172  0.832935  0.326615  0.172727  0.847513  0.881634    0.468636
173  0.568443  0.759775  0.076363  0.816483  0.710414    0.278909
174  0.162976  0.525342  0.383226  0.945746  0.299718    0.030625
175  0.738885  0.892773  0.986176  0.495240  0.858186    0.341159

[176 rows x 6 columns]
 

 

スポンサーリンク

 - Python