このデータをある条件で処理してその各列の値をリストに格納しています。
[244, 44, 61, 14, 3, 32, 37, 8.....略..72]
このようなリストが4つできます。
これをエクセルに元のファイルのように書き込みたいのですが、できません。
書いているコードが以下になります。
import numpy as np import pandas as pd import openpyxl from openpyxl import Workbook wb = Workbook() wb = openpyxl.load_workbook("/Users/匿名/Desktop/matome/まとめ.xlsx") ws = wb.worksheets[0] excel = Workbook() new_ws = excel.active def get_between_zeros(arr, N, return_index=False): arr = np.r_[arr, np.zeros(N, dtype=int)] is_nonzero = arr != 0 s = is_nonzero.argmax() ln = np.convolve(is_nonzero[s:], np.ones(N, dtype=int), 'valid').argmin() if return_index: return arr[s:s+ln], (s, s+ln) else: return arr[s:s+ln] a=1 b=1 for j in ['A' , 'D']: data= [cell.value for cell in ws[j]] data.pop(0) a = np.array(data) j = [] for i in range(a.size): out, [s, e] = get_between_zeros(a, 3, True) j.append(out.sum()) new_ws.cell(a, b).value = j b += 1 a[:e] = 0 if a.sum() == 0: break wb.close()
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
と返されてしまいます。
リスト自体はうまく作られています。
new_ws.cell(a, b).value = jがうまくいきません。
この原因は何でしょうか?
小質問
for j in ['A' , 'D']:
この部分は本当は全ての列を選択したいです。全て入力してもいいのですが、最終的に35〜40列くらいあるのでなんとか楽をしたいです。
回答1件
あなたの回答
tips
プレビュー