実現したいこと
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 #1 12 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) / 2 15print(result)
を回してみましたが、以下ような結果となりました。
1 2 7 8
0 NaN NaN NaN NaN
1 NaN NaN NaN NaN
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2024/04/22 04:20