前提・実現したいこと
pythonで以下のcsvファイルを読み込み、リストを扱って計算を行いたいです。
IDは0から99まで存在し各ID毎にData列にあるリスト内の数字が次の行のリスト内に含まれている確率を計算し,リストに代入したいです。
具体的には、ID=0の時1行目のリストに含まれている数字が2行目のリストに含まれている確率、2行目のリストに含まれている数字が3行目のリストに含まれている確率を最後の行まで計算し平均を出すといった作業をIDの数だけ行い最後にそれらの平均を出すプログラムを作っています。
発生している問題・エラーメッセージ
p[j].append(np.mean([d in df.loc[k+1, 'Data'] for d in df.loc[k, 'Data']])) IndexError: list index out of range
該当のcsv
python
1R,G,ID,Data 21,0,0,"[1, 9, 10, 90]" 31,0,1,"[0, 2, 11, 91]" 41,0,2,"[1, 3, 12, 92]" 51,0,3,"[2, 4, 13, 93]" 6、、、 72,0,0,"[3, 9, 10, 91]" 82,0,1,"[0, 2, 11, 91]" 92,0,2,"[1, 3, 12, 92]" 102,0,3,"[2, 4, 13, 93]" 11、、、 12
該当のソースコード
python
1import pandas as pd 2import json 3import io 4import numpy as np 5p=[] 6for i in range(1,11): 7 with open('d'+str(i)+'.csv') as da:#10個のファイルを扱う 8 df = pd.read_csv(da) 9 for j in range(0,100):#各IDそれぞれについて計算したい 10 df2 = df[(df["ID"]==j)] 11 for k in range(len(df2)): 12 p[j].append(np.mean([d in df.loc[k+1, 'Data'] for d in df.loc[k, 'Data']])) 13 print((sum(p[j]))/len(p[j]))
懸念点
初心者であるため、リストのエラーよりも大きな問題があるとおもわれるので
ご指摘のほどよろしくお願いいたします。