回答編集履歴
3
文法の修正
test
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
|
11
11
|
|
12
12
|
|
13
|
-
もしかしたら、DataFrameの作り方に問題があって、数値の中に文字列が含まれているのかもしれません。
|
13
|
+
もしかしたら、DataFrameの作り方に問題があって、数値の中に文字列が含まれているのかもしれません。末尾に例示したコードでできる最初のDataFrameを、質問者様のDataFrameと比較確認してください。文字列数値にまつわるエラーが無くなった際に、この新しいエラーが出てくると思います。
|
14
14
|
|
15
15
|
|
16
16
|
|
2
文法の修正
test
CHANGED
@@ -1,3 +1,23 @@
|
|
1
|
+
まず、質問者様のコードを実際に動かすと
|
2
|
+
|
3
|
+
SettingWithCopyWarning:
|
4
|
+
|
5
|
+
A value is trying to be set on a copy of a slice from a DataFrame.
|
6
|
+
|
7
|
+
Try using .loc[row_indexer,col_indexer] = value instead
|
8
|
+
|
9
|
+
というエラーが出て、報告されているエラーと違います。
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
もしかしたら、DataFrameの作り方に問題があって、数値の中に文字列が含まれているのかもしれません。上記のコードでできる最初のDataFrameを、質問者様のDataFrameと比較確認してください。その際も、文字列数値にまつわるエラーが無くなった際に、このエラーが出てくると思います。
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
以降は、この新しいエラーに基づいた回答をしています。
|
18
|
+
|
19
|
+
|
20
|
+
|
1
21
|
今回のエラーは、スカラー値をDataFrameやSeriesに代入しようとすると発生します。+=も代入の一種です。本来はloc等で、元のDataFrame(今回の場合はdf_ja_result)のどこの場所かを明確に示すことが必要です。
|
2
22
|
|
3
23
|
|
@@ -73,19 +93,3 @@
|
|
73
93
|
print(df_ja_result)
|
74
94
|
|
75
95
|
```
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
なお、質問者様のコードを実際に動かすと
|
80
|
-
|
81
|
-
SettingWithCopyWarning:
|
82
|
-
|
83
|
-
A value is trying to be set on a copy of a slice from a DataFrame.
|
84
|
-
|
85
|
-
Try using .loc[row_indexer,col_indexer] = value instead
|
86
|
-
|
87
|
-
というエラーが出て、報告されているエラーと違います。このエラーに基づいた回答をしています。
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
もしかしたら、DataFrameの作り方に問題があって、数値の中に文字列が含まれているのかもしれません。上記のコードでできる最初のDataFrameを、質問者様のDataFrameと比較確認してください。その際も、文字列数値にまつわるエラーが無くなった際に、このエラーが出てくると思います。
|
1
補足追記
test
CHANGED
@@ -10,12 +10,82 @@
|
|
10
10
|
|
11
11
|
|
12
12
|
|
13
|
+
なお、質問文に記載されていないループ部分にまつわるコードは省きました。
|
14
|
+
|
13
15
|
|
14
16
|
|
15
17
|
```Python
|
18
|
+
|
19
|
+
import pandas as pd
|
20
|
+
|
21
|
+
import io
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
data = (
|
26
|
+
|
27
|
+
'''
|
28
|
+
|
29
|
+
保有数量 取得単価 現在値 外貨建評価損益 商品 Totalamount % 差分
|
30
|
+
|
31
|
+
2 119.16 118.23 -1.86 AGG 236.46 5.133794331 -0.133794331
|
32
|
+
|
33
|
+
2 187.2 176.7 -21 GLD 353.4 7.672684245 -0.172684245
|
34
|
+
|
35
|
+
3 81.92 80.18 -5.22 IYR 240.54 5.222375406 -0.222375406
|
36
|
+
|
37
|
+
35 34.54 41.06 228.2 VEA 1437.1 31.2009466 1.699053398
|
38
|
+
|
39
|
+
10 148.65 169.99 213.4 VTI 1699.9 36.90660993 -1.906609928
|
40
|
+
|
41
|
+
15 36.46 42.57 91.65 VWO 638.55 13.86358949 0.736410512
|
42
|
+
|
43
|
+
''')
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
df_ja_result = pd.read_csv(io.StringIO(data.replace(' ', ',')))
|
48
|
+
|
49
|
+
|
50
|
+
|
51
|
+
print(df_ja_result)
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
# 購入すべきものの算出
|
56
|
+
|
57
|
+
mostbuy = df_ja_result[df_ja_result.差分 == df_ja_result.差分.max()].商品
|
58
|
+
|
59
|
+
mostbuy2 = mostbuy.iloc[0]
|
60
|
+
|
61
|
+
realcost = df_ja_result[df_ja_result.差分 == df_ja_result.差分.max()].現在値
|
62
|
+
|
63
|
+
print(realcost)
|
64
|
+
|
65
|
+
realcost2 = float(realcost.iloc[0])
|
66
|
+
|
67
|
+
print(mostbuy2)
|
16
68
|
|
17
69
|
df_ja_result.保有数量 += (df_ja_result.差分 == df_ja_result.差分.max()).astype(int)
|
18
70
|
|
19
71
|
|
20
72
|
|
73
|
+
print(df_ja_result)
|
74
|
+
|
21
75
|
```
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
なお、質問者様のコードを実際に動かすと
|
80
|
+
|
81
|
+
SettingWithCopyWarning:
|
82
|
+
|
83
|
+
A value is trying to be set on a copy of a slice from a DataFrame.
|
84
|
+
|
85
|
+
Try using .loc[row_indexer,col_indexer] = value instead
|
86
|
+
|
87
|
+
というエラーが出て、報告されているエラーと違います。このエラーに基づいた回答をしています。
|
88
|
+
|
89
|
+
|
90
|
+
|
91
|
+
もしかしたら、DataFrameの作り方に問題があって、数値の中に文字列が含まれているのかもしれません。上記のコードでできる最初のDataFrameを、質問者様のDataFrameと比較確認してください。その際も、文字列数値にまつわるエラーが無くなった際に、このエラーが出てくると思います。
|