前提・実現したいこと
つい最近pythonを扱い始めた初心者です。
pythonを用いてデータ処理を行っております。
3つのcsvファイルの直積を得たく、以前はitertools.productより求めていましたが、
・数値は和になってしまうこと
・数値を文字列としても1つのセルにすべての数字が入ってしまうこと
から、for文で何とかできないかと考えております。
①1,2,3 ②4,5,6 ③7,8,9
の3つのデータだとしたら、
(1,4,7),(1,4,8),(1,4,9),(1,5,7)…という組み合わせになりますが、
itertools.productですと1つのセルに147と表示されてしまうため、1,4,7をそれぞれ同じ行の違う列のセルに入れたいと考えています。
全組み合わせが別のセルに入れることが可能であれば、csvファイルでもxlsxファイルでも構いません。
初歩的な質問で申し訳ございません。ご教授願います。
発生している問題・エラーメッセージ
エラーメッセージは表示されませんが、csvファイルを開くと、縦に atime 1 2 3 btime 4 5 6 ctime 7 8 9 ctime 7 8 9 のように表示されてしまいます。 --------------------------------------- xlsxファイルでも試みてみた際に発生したメッセージです ws.cell(row=i,column=3) = a.cell(row=i,column=2) ^ SyntaxError: can't assign to function call
該当のソースコード
python
1import pandas as pd 2import csv 3 4a = pd.read_csv('a.csv') 5b = pd.read_csv('b.csv') 6c = pd.read_csv('c.csv') 7 8for atime in a['time']: 9 a['time'].to_csv('time.csv', columns=['time'], header=['atime'], index=True) 10 for btime in b['time']: 11 b['time'].to_csv('time.csv', columns=['time'], mode='a', header=['btime'], index=True) 12 for ctime in c['time']: 13 c['time'].to_csv('time.csv', columns=['time'], mode='a', header=['ctime'], index=True) 14 15---------------------------------------------------- 16xlsxファイルで試したソースコードです 17 18import pandas as pd 19import csv 20import openpyxl as px 21 22a = px.load_workbook('a.xlsx') 23b = px.load_workbook('b.xlsx') 24c = px.load_workbook('c.xlsx') 25wb = openpyxl.Workbook() 26ws = wb.active 27 28for i in range(2,cpurow+1): 29 ws.cell(row=i,column=3) = a.cell(row=i,column=2) 30 for j in range(2,mbrow+1): 31 ws.cell(row=j,column=4) = b.cell(row=j,column=3) 32 for k in range(2,memoryrow+1): 33 ws.cell(row=k,column=5) = c.cell(row=k,column=4) 34 35wb.save('time.xlsx')
試したこと
横につなげたいためconcat等も用いましたが、うまくいきません…
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/06/02 13:43