下記のdf(df名:test)から条件を付けてデータの抽出を行うために下記のようなfor文とif文を組み合わせたものを作成いたしました。
しかしたった一つしかパラメータが違わない
(今回の場合は if test.loc[i, "close"]>test.loc[i, "変数"]:)
のにも関わらず複数回同じコードを使用するのは非効率だと思っており、一本のコードで複数のdfにデータを抽出する術を模索しております。
またご覧いただいたらわかっていただける通り初心者のコードですので非効率的な方法でやっていると思います。
もしほかのコードで同じことが出来る様なものがありましたらそちらを上記の質問に加えてお教え頂ければ幸いです。
よろしくお願いいたします。
condition1 = pd.DataFrame(index=[], columns=["date1", "close1", "date2", "close2"]) condition2 = pd.DataFrame(index=[], columns=["date1", "close1", "date2", "close2"]) condition3 = pd.DataFrame(index=[], columns=["date1", "close1", "date2", "close2"]) for i in range(len(test)): if test.loc[i, "close"]>test.loc[i, "open"]: a= pd.Series(data=[test.loc[i, "Date"], test.loc[i, "close"], test.loc[i+1, "Date"], test.loc[i+1, "close"]], index=condition1.columns) condition1 = condition1.append(a, ignore_index=True) if test.loc[i+1, "Date"] == "2021年4月30日": break for i in range(len(test)): a= pd.Series(data=[test.loc[i, "Date"], test.loc[i, "close"], test.loc[i+1, "Date"], test.loc[i+1, "close"]], index=condition2.columns) if test.loc[i, "close"]>test.loc[i, "high"]: condition2 = condition2.append(a, ignore_index=True) if test.loc[i+1, "Date"] == "2021年4月30日": break for i in range(len(test)): a= pd.Series(data=[test.loc[i, "Date"], test.loc[i, "close"], test.loc[i+1, "Date"], test.loc[i+1, "close"]], index=condition3.columns) if test.loc[i, "close"]>test.loc[i, "low"]: condition3 = condition3.append(a, ignore_index=True) if test.loc[i+1, "Date"] == "2021年4月30日": break print(condition1)
condition1の取得結果
date1 close1 date2 close2
0 2021年7月28日 40003.2 2021年7月27日 39452.0
1 2021年7月27日 39452.0 2021年7月26日 37276.6
2 2021年7月26日 37276.6 2021年7月25日 35391.1
3 2021年7月25日 35391.1 2021年7月24日 33824.8
4 2021年7月24日 33824.8 2021年7月23日 33603.3
5 2021年7月23日 33603.3 2021年7月22日 32298.9
6 2021年7月22日 32298.9 2021年7月21日 32131.4
7 2021年7月21日 32131.4 2021年7月20日 29793.8
8 2021年7月18日 31785.4 2021年7月17日 31518.6
9 2021年7月17日 31518.6 2021年7月16日 31394.0
10 2021年7月14日 32820.7 2021年7月13日 32728.1
11 2021年7月11日 34227.7 2021年7月10日 33510.6
12 2021年7月9日 33797.4 2021年7月8日 32866.3
13 2021年7月6日 34225.6 2021年7月5日 33687.8
14 2021年7月4日 35298.2 2021年7月3日 34742.8
15 2021年7月3日 34742.8 2021年7月2日 33813.4
16 2021年7月2日 33813.4 2021年7月1日 33543.6
17 2021年6月29日 35834.7 2021年6月28日 34475.9
18 2021年6月27日 34678.5 2021年6月26日 32243.4
19 2021年6月26日 32243.4 2021年6月25日 31594.0
20 2021年6月24日 34665.8 2021年6月23日 33674.3
21 2021年6月23日 33674.3 2021年6月22日 32496.4
22 2021年6月22日 32496.4 2021年6月21日 31692.0
23 2021年6月20日 35595.8 2021年6月19日 35513.4
24 2021年6月14日 40529.4 2021年6月13日 39022.9
25 2021年6月13日 39022.9 2021年6月12日 35467.5
26 2021年6月11日 37314.6 2021年6月10日 36649.4
27 2021年6月9日 37332.2 2021年6月8日 33382.9
28 2021年6月6日 35815.4 2021年6月5日 35520.0
29 2021年6月3日 39187.3 2021年6月2日 37555.8
30 2021年6月2日 37555.8 2021年6月1日 36687.6
31 2021年5月31日 37298.6 2021年5月30日 35652.8
32 2021年5月30日 35652.8 2021年5月29日 34584.6
33 2021年5月26日 39249.2 2021年5月25日 38378.3
34 2021年5月24日 38750.6 2021年5月23日 34679.7
35 2021年5月22日 37448.3 2021年5月21日 37297.4
36 2021年5月20日 40717.2 2021年5月19日 36720.5
37 2021年5月14日 49839.8 2021年5月13日 49704.6
38 2021年5月13日 49704.6 2021年5月12日 49384.2
39 2021年5月11日 56695.7 2021年5月10日 55848.9
40 2021年5月8日 58840.1 2021年5月7日 57337.2
41 2021年5月7日 57337.2 2021年5月6日 56405.4
42 2021年5月5日 57441.3 2021年5月4日 53741.5
43 2021年5月3日 57169.8 2021年5月2日 56603.8
44 2021年5月1日 57807.1 2021年4月30日 57720.3
今回使用しているデータフレーム"test"
Date close open high low
0 2021年7月30日 38997.4 40001.1 40245.6 38915.2
1 2021年7月29日 40001.4 40009.0 40630.7 39340.8
2 2021年7月28日 40003.2 39450.4 40862.2 38883.8
3 2021年7月27日 39452.0 37294.3 39455.9 36427.4
4 2021年7月26日 37276.6 35392.3 40522.9 35236.7
5 2021年7月25日 35391.1 34392.5 35391.1 33881.3
6 2021年7月24日 33824.8 33600.5 33955.0 33412.9
7 2021年7月23日 33603.3 32297.9 33605.6 32041.1
8 2021年7月22日 32298.9 32131.7 32585.4 31729.4
9 2021年7月21日 32131.4 29794.7 32794.6 29519.3
10 2021年7月20日 29793.8 30835.4 31040.8 29310.2
11 2021年7月19日 30837.2 31782.9 31887.0 30478.2
12 2021年7月18日 31785.4 31517.9 32408.2 31220.6
13 2021年7月17日 31518.6 31384.4 31914.8 31207.8
14 2021年7月16日 31394.0 31842.3 32239.8 31062.2
15 2021年7月15日 31840.5 32820.5 33157.0 31175.8
16 2021年7月14日 32820.7 32727.8 33051.9 31611.2
17 2021年7月13日 32728.1 33106.1 33307.7 32259.5
18 2021年7月12日 33113.0 34228.3 34598.0 32662.8
19 2021年7月11日 34227.7 33510.8 34580.6 33319.8
20 2021年7月10日 33510.6 33797.7 34221.0 33056.8
21 2021年7月9日 33797.4 32866.3 34079.2 32367.0
22 2021年7月8日 32866.3 33859.4 33923.2 32146.9
23 2021年7月7日 33867.8 34228.7 35036.6 33801.3
24 2021年7月6日 34225.6 33688.5 35062.0 33581.7
25 2021年7月5日 33687.8 35297.0 35300.5 33164.1
26 2021年7月4日 35298.2 34742.8 35957.6 34740.1
27 2021年7月3日 34742.8 33814.2 34909.8 33363.3
28 2021年7月2日 33813.4 33542.2 33925.9 32734.6
29 2021年7月1日 33543.6 35030.7 35032.7 32839.2
30 2021年6月30日 35026.9 35832.6 36089.5 34126.6
31 2021年6月29日 35834.7 34477.3 36590.3 34247.6
32 2021年6月28日 34475.9 34682.2 35231.2 33944.9
33 2021年6月27日 34678.5 32247.1 34685.5 32041.7
34 2021年6月26日 32243.4 31592.1 32643.0 30206.9
35 2021年6月25日 31594.0 34660.5 35490.9 31337.9
36 2021年6月24日 34665.8 33678.1 35249.9 32356.7
37 2021年6月23日 33674.3 32498.3 34784.3 31736.5
38 2021年6月22日 32496.4 31682.7 33272.5 28901.8
39 2021年6月21日 31692.0 35597.9 35708.4 31284.1
40 2021年6月20日 35595.8 35510.9 36097.9 33378.0
41 2021年6月19日 35513.4 35770.0 36357.3 34845.5
42 2021年6月18日 35749.4 38045.5 38166.0 35198.5
43 2021年6月17日 38052.0 38337.8 39529.9 37425.3
44 2021年6月16日 38336.0 40148.1 40494.4 38156.4
45 2021年6月15日 40156.1 40522.5 41318.0 39589.9
46 2021年6月14日 40529.4 39024.1 40970.4 38769.9
47 2021年6月13日 39022.9 35467.5 39321.6 34827.0
48 2021年6月12日 35467.5 37334.4 37437.3 34703.3
49 2021年6月11日 37314.6 36654.3 37641.1 36003.3
50 2021年6月10日 36649.4 37375.2 38340.8 35824.0
51 2021年6月9日 37332.2 33385.5 37517.6 32428.6
52 2021年6月8日 33382.9 33574.6 34047.8 31158.1
53 2021年6月7日 33578.0 35815.4 36754.6 33410.1
54 2021年6月6日 35815.4 35518.7 36434.0 35265.3
55 2021年6月5日 35520.0 36841.2 37887.6 34832.0
56 2021年6月4日 36851.3 39191.4 39255.4 35659.9
57 2021年6月3日 39187.3 37555.7 39462.3 37193.6
58 2021年6月2日 37555.8 36687.7 38199.9 35981.1
59 2021年6月1日 36687.6 37294.3 37850.3 35742.7
60 2021年5月31日 37298.6 35644.0 37480.7 34213.2
61 2021年5月30日 35652.8 34589.3 36388.6 33441.0
62 2021年5月29日 34584.6 35664.5 37227.1 33664.2
63 2021年5月28日 35662.5 38543.2 38844.1 34772.4
64 2021年5月27日 38417.3 39249.0 40322.2 37190.8
65 2021年5月26日 39249.2 38375.7 40750.0 37847.0
66 2021年5月25日 38378.3 38753.6 39740.8 36540.7
67 2021年5月24日 38750.6 34720.3 39851.7 34474.6
68 2021年5月23日 34679.7 37446.8 38248.7 31192.4
69 2021年5月22日 37448.3 37291.0 38776.0 35314.9
70 2021年5月21日 37297.4 40611.2 42108.3 33592.3
71 2021年5月20日 40717.2 36706.8 42425.9 35010.4
72 2021年5月19日 36720.5 42898.3 43516.6 30261.7
73 2021年5月18日 42897.3 43538.5 45770.9 42293.9
74 2021年5月17日 43541.3 46424.2 46545.4 42201.5
75 2021年5月16日 46426.4 46729.3 49764.3 43920.8
76 2021年5月15日 46708.8 49839.1 50640.9 46650.2
77 2021年5月14日 49839.8 49704.9 51459.2 48874.0
78 2021年5月13日 49704.6 49398.2 51337.3 46331.1
79 2021年5月12日 49384.2 56694.5 57938.5 49187.0
80 2021年5月11日 56695.7 55846.1 56871.1 54550.4
81 2021年5月10日 55848.9 58251.2 59523.9 53678.3
82 2021年5月9日 58238.3 58840.6 59227.0 56414.4
83 2021年5月8日 58840.1 57330.3 59471.1 56972.2
84 2021年5月7日 57337.2 56411.4 58639.3 55300.1
85 2021年5月6日 56405.4 57441.0 58364.9 55294.5
86 2021年5月5日 57441.3 53872.5 57936.4 53872.5
87 2021年5月4日 53741.5 57170.6 57201.3 53741.5
88 2021年5月3日 57169.8 56605.8 58925.1 56562.4
89 2021年5月2日 56603.8 57807.2 57868.4 56110.5
90 2021年5月1日 57807.1 57719.1 58449.4 57029.5
91 2021年4月30日 57720.3 53562.3 57925.6 53088.7
回答2件
あなたの回答
tips
プレビュー