質問するログイン新規登録

回答編集履歴

1

pandas版を追加

2021/03/09 07:29

投稿

ppaul
ppaul

スコア24672

answer CHANGED
@@ -17,4 +17,53 @@
17
17
  ただし、このコードではエクセルの.xlsxファイルは読めません。
18
18
  入力ファイルをエクセルで開き、csvとして保存する、で保存してできる.csvファイルを指定してください。
19
19
 
20
- エクセルの.xlsxファイルを読みたければopenpyxlを使って読むか、pandasを使って読むことになるので大幅な変更が必要です。
20
+ エクセルの.xlsxファイルを読みたければopenpyxlを使って読むか、pandasを使って読むことになるので大幅な変更が必要です。
21
+
22
+ pandas版を作ってみました。原型は留めていないですね。
23
+
24
+ ```python
25
+ import pandas as pd
26
+ import cmath
27
+
28
+ df = pd.read_excel('complex.xlsx', header=None)
29
+ df.columns = ['mag', 'ph']
30
+ df['v'] = df.apply(lambda row: cmath.rect(row['mag'], row['ph']*cmath.pi), axis=1)
31
+ print(df)
32
+ mag = list(df['mag'])
33
+ ph = list(df['ph'])
34
+ v = list(df['v'])
35
+ print(mag)
36
+ print(ph)
37
+ print(v)
38
+ ```
39
+ 実行結果は以下です。
40
+
41
+ ```python
42
+ >>> import pandas as pd
43
+ >>> import cmath
44
+ >>>
45
+ >>> df = pd.read_excel('complex.xlsx', header=None)
46
+ >>> df.columns = ['mag', 'ph']
47
+ >>> df['v'] = df.apply(lambda row: cmath.rect(row['mag'], row['ph']*cmath.pi), axis=1)
48
+ >>> print(df)
49
+ mag ph v
50
+ 0 0.487437 0.000000 0.487437+0.000000j
51
+ 1 0.653218 134.639831 -0.277814+0.591197j
52
+ 2 0.193873 166.950760 -0.191558+0.029871j
53
+ 3 0.202087 123.128914 -0.185739-0.079625j
54
+ 4 0.583534 154.655045 -0.273125+0.515669j
55
+ 5 0.128547 56.141060 0.116130+0.055120j
56
+ 6 0.129435 -154.545288 -0.018354-0.128128j
57
+ 7 0.321489 177.046280 -0.318097-0.046578j
58
+ 8 0.029101 138.556107 -0.005103+0.028651j
59
+ 9 0.192596 -175.898743 0.182933+0.060239j
60
+ >>> mag = list(df['mag'])
61
+ >>> ph = list(df['ph'])
62
+ >>> v = list(df['v'])
63
+ >>> print(mag)
64
+ [0.487436891, 0.653218389, 0.193872913999999, 0.202087417, 0.583534479, 0.128547326, 0.12943536, 0.3214885, 0.029101485, 0.192596287]
65
+ >>> print(ph)
66
+ [0.0, 134.639831499999, 166.9507599, 123.1289139, 154.6550446, 56.14105988, -154.5452881, 177.0462799, 138.5561066, -175.898742699999]
67
+ >>> print(v)
68
+ [(0.487436891+0j), (-0.2778139468650384+0.5911968154980412j), (-0.19155787387867684+0.02987118574700291j), (-0.18573943062119574-0.07962529762736151j), (-0.27312543609590767+0.5156694525946071j), (0.11613020926096146+0.05511977429884463j), (-0.018353576473760323-0.12812750933718892j), (-0.31809650787860944-0.04657754080760128j), (-0.0051030261112949655+0.028650576847816987j), (0.18293344364875225+0.06023856705629006j)]
69
+ ```