プログラミング初心者です。
拙い質問ですがよろしくお願いします。
csvファイルをxlsxファイルに変換し、
変換されたファイルの空いているセルにExcel関数を入れ、求められた値を抽出するプログラムを組んでいます。
Excel関数を入れるところまでは出来たのですが
変換されたxlsxファイルの数値が全て文字列という扱いになっており、
計算が上手くされませんでした。
以下、コードです。
(python) import pandas as pd import re import csv import openpyxl with open('filename.csv', 'r', newline='') as file, \ open('file_out.csv', 'w', newline='') as fileout: text = re.sub(r'\s* ', ',', file.read()) print(text, file = fileout) print('置換完了') col_names = [1,2,3,4,5] df = pd.read_csv('file_out.csv',encoding='cp932',names=col_names) df.to_excel('excel-data.xlsx') print('CSV > Excel変換完了') wb = openpyxl.load_workbook('excel-data.xlsx',data_only=True) sheet = wb.worksheets[0] sheet["E2"] = '=AVERAGEIFS(D17:D2000,C17:C2000,">=0",C17:C2000,"<=1.5")' wb.save('excel-data.xlsx')
以上を入力して出来たファイルがこちらです。
(xlsx) 1 2 3 4 5 V1.0.2 Interpolation #DIV/0! レコード数 872 サンプリング周波数(Hz) 100 0m位置 7 高さ補正 2 コメント1 12 コメント2 タイプ(0:なし 1:3点移動平均 2:バターワース) 2 フィルタ遮断周波数 4 フィルタ回数 3 遮断周波数 1 始終点処理点数 20 Saturday 19.10.2019 16:18:51 補間位置情報数 0 ID 距離(m) 速度(m/s) 0 -5.689224 0 1 -5.694527 0 2 -5.699684 -0.507 3 -5.70468 -0.491 4 -5.709504 -0.473 5 -5.71415 -0.455 6 -5.718608 -0.436 7 -5.722875 -0.417 8 -5.726947 -0.397 9 -5.730822 -0.378 10 -5.734498 -0.358 11 -5.737978 -0.338 12 -5.741262 -0.319 13 -5.744353 -0.3 14 -5.747254 -0.281 15 -5.749968 -0.262 16 -5.7525 -0.244 17 -5.754853 -0.227 18 -5.757033 -0.21 19 -5.759046 -0.193 20 -5.760897 -0.178 21 -5.762592 -0.162 22 -5.76414 -0.148 23 -5.765546 -0.134 24 -5.766817 -0.121 25 -5.767962 -0.109 26 -5.768986 -0.097 27 -5.769897 -0.086 28 -5.770699 -0.075 29 -5.771398 -0.065 30 -5.772 -0.056 31 -5.77251 -0.047 32 -5.772934 -0.039 33 -5.773278 -0.031 34 -5.773548 -0.024 35 -5.77375 -0.017 36 -5.773889 -0.011 37 -5.77397 -0.006 38 -5.773996 0 39 -5.773973 0.004 40 -5.773905 0.009 41 -5.773793 0.013 42 -5.773642 0.017 43 -5.773454 0.02 44 -5.773232 0.024 45 -5.77298 0.027 46 -5.772699 0.029 47 -5.772393 0.032 48 -5.772064 0.034 49 -5.771713 0.036 50 -5.771344 0.038 51 -5.770957 0.039 52 -5.770556 0.041 53 -5.770142 0.042 54 -5.769718 0.043 55 -5.769286 0.043 56 -5.768847 0.044 57 -5.768404 0.044 58 -5.767957 0.045 59 -5.767509 0.045 60 -5.76706 0.045 61 -5.766612 0.045 62 -5.766164 0.045 以下略
intやfloatは試しましたが解決には至りませんでした。
お手数ですが回答いただけたらと思います。
よろしくお願いします。
6月6日追記
原因はdfにより数値が文字列として扱われていました。
現在は”C17:D2000”の範囲を数値にする解決方法を探しております。
よろしくお願いします。
![guest](/img/icon/icnUserSample.jpg)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/06 04:20
2020/06/06 05:39
2020/06/06 05:41
2020/06/06 05:49
2020/06/06 06:00
2020/06/06 06:03
2020/06/06 06:36
2020/06/06 06:49
2020/06/06 06:53
2020/06/06 07:51