まずCSVデータですが、
CSV
1Generation,Agent_ID,Round,Data
20,0,1,"[1, 2, 3, 4]"
30,0,2,"[2, 3, 5, 6, 7]"
のように
- リスト部をQuoteで囲む
- ヘッダ行にてリスト部にもカラム名を指定 (','だけでもよい)
であれば普通にCSVとして読めるかと思います。
ということで、データをテキストで読み込んで上記を修正(置換)したあとでPandasでCSVとして読み込むという手法を取ります。
あとリスト部の解析(文字列 to List)には Json Parserを使用します
Python
1import pandas as pd
2import json
3import io
4
5with open('data.csv') as f:
6 data = f.read()
7 data = data.replace('Round', 'Round,Data') #ヘッダ行修正
8 data = data.replace('[', '\"[').replace(']', ']\"') #Quote追加処理
9 df = pd.read_csv(io.StringIO(data),
10 index_col='Round',
11 converters={'Data':lambda d: json.loads(d)})
12print(df)
13# Generation Agent_ID Data
14#Round
15#1 0 0 [1, 2, 3, 4]
16#2 0 0 [2, 3, 5, 6, 7]
あとは、Generation=1 の行とGeneration=2の行が1行ずつしか無いと仮定すると、単なるリスト同士の処理なので
Python
1p = np.mean([d in df.loc[2, 'Data'] for d in df.loc[1, 'Data']])
2print(p)
3# 0.5
とでもすると良いのではないでしょうか。