実現したいこと
sample1.csvは以下の通りです。
1 2
3 4
5 6
sample2.csvは以下の通りです。
7 8
9 10
11 12
この2つのファイルの各セルの値の平均を取りたいです。
つまり、正解は
4 5
6 7
8 9
となります。
なお、平均処理したいファイルの数が沢山のときに応用が利くようにfor文を使っています。
発生している問題・エラーメッセージ
該当のソースコードでは以下のようなエラーが出ます。
Traceback (most recent call last): File "・・・\testCV253\testCV253.py", line 13, in <module> ave = 0.5*lst + ave ~~~^~~~ TypeError: can't multiply sequence by non-int of type 'float'
13行目を
ave = 0.5*float(lst) + ave
にすると、以下のようなエラーが出ます。
Traceback (most recent call last): File "・・・\testCV253\testCV253.py", line 13, in <module> ave = 0.5*float(lst) + ave ^^^^^^^^^^ TypeError: float() argument must be a string or a real number, not 'list'
該当のソースコード
python
1import pandas as pd 2import csv 3 4size=(3,2)5ave=np.zeros(size,np.uint8)6 7for i in range(1,3,1):8 filename = 'sample%d.csv' % i 9 lst = pd.read_csv(filename,header=None).values.tolist()10 print(str(lst[0][0]))11 #112 13 ave = 0.5*lst + ave #多分この行が間違っている14 15print(ave)
試したこと
https://teratail.com/questions/317566
を参考にして
python
1import pandas as pd 2import csv 3 4df1 = pd.read_csv('sample1.csv')5df2 = pd.read_csv('sample2.csv')6 7rowcount = max(len(df1),len(df2))8columncount = len(df1.columns)9if len(df1) < rowcount:10 df1 = df1.append(pd.Series([0]*columncount),ignore_index=True)11elif len(df2) < rowcount:12 df2 = df2.append(pd.Series([0]*columncount),ignore_index=True)13 14result = (df1 + df2) / 215print(result)
を回してみましたが、以下ような結果となりました。
1 2 7 8
0 NaN NaN NaN NaN
1 NaN NaN NaN NaN
0 コメント