前提・実現したいこと
お世話になります。投資の成績を管理したいと思い、
業者HPからダウンロードしたcsv形式の成績データを
下記のように加工したいと考えています。
①A、C、F列を削除
②「ペイアウト」の「---」を「0」へ置換
③列を入れ替え
④「pips差」=「判定レート」-「取引内容」及び「損益」=「ペイアウト」-「購入」の列を追加
⑤④の「損益」の合計をシートに追加
⑥Excelシートとして保存
発生している問題・エラーメッセージ
Traceback (most recent call last): File "C:\Users\User\Documents\Python Programs\highlow.py", line 17, in <module> chg_df.diff(axis=1) File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\site-packages\pandas\core\frame.py", line 6594, in diff new_data = self._data.diff(n=periods, axis=bm_axis) File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\site-packages\pandas\core\internals\managers.py", line 566, in diff return self.apply("diff", **kwargs) File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\site-packages\pandas\core\internals\managers.py", line 438, in apply applied = getattr(b, f)(**kwargs) File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\site-packages\pandas\core\internals\blocks.py", line 1330, in diff new_values = algos.diff(self.values, n, axis=axis) File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\site-packages\pandas\core\algorithms.py", line 1977, in diff out_arr[res_indexer] = arr[res_indexer] - arr[lag_indexer] TypeError: unsupported operand type(s) for -: 'str' and 'str' 特定の列だけ計算する方法がわかりません。
該当のソースコード
#! python3 #! utf-8 import pandas as pd import numpy as np #ファイル読み込み df = pd.read_csv('highlow.csv',engine='python') #置換 rep_df = df.replace('---', '0') #不要列の削除 del_df = rep_df.drop(df.columns[[0,2,5]], axis=1) #列の入れ替え chg_df = del_df.iloc[:,[6,7,0,1,2,5,3,4]]
試したこと
chg_df.diff(axis=1)
print(chg_df)
試しに列で減算しようと思いましたが、エラーで行き詰まりました。
ぜひアドバイスお願いいたします。
補足情報(FW/ツールのバージョンなど)
OS:windows10 Pro
python3.7.3
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/17 08:58
2019/10/23 01:59