回答編集履歴

4

バグを修正

2020/08/15 23:34

投稿

yymmt
yymmt

スコア1615

test CHANGED
@@ -19,8 +19,6 @@
19
19
  for column in df.columns:
20
20
 
21
21
  rule = rule.replace(column, f"df['{column}']")
22
-
23
- rules[col_name] = rule
24
22
 
25
23
  exec(f"new_df['{col_name}'] = {rule}")
26
24
 

3

さらに簡素化

2020/08/15 23:33

投稿

yymmt
yymmt

スコア1615

test CHANGED
@@ -8,13 +8,9 @@
8
8
 
9
9
  from io import StringIO
10
10
 
11
- from copy import deepcopy
12
-
13
11
 
14
12
 
15
13
  def create_dataframe_by_rules(df, rules):
16
-
17
- rules = deepcopy(rules) # rulesを破壊してよいなら不要
18
14
 
19
15
  new_df = pd.DataFrame()
20
16
 

2

ループを1つにまとめた

2020/08/15 23:33

投稿

yymmt
yymmt

スコア1615

test CHANGED
@@ -16,6 +16,8 @@
16
16
 
17
17
  rules = deepcopy(rules) # rulesを破壊してよいなら不要
18
18
 
19
+ new_df = pd.DataFrame()
20
+
19
21
  for col_name, rule in rules.items():
20
22
 
21
23
  for column in df.columns:
@@ -23,10 +25,6 @@
23
25
  rule = rule.replace(column, f"df['{column}']")
24
26
 
25
27
  rules[col_name] = rule
26
-
27
- new_df = pd.DataFrame()
28
-
29
- for col_name, rule in rules.items():
30
28
 
31
29
  exec(f"new_df['{col_name}'] = {rule}")
32
30
 

1

ソースコードを1つにまとめた

2020/08/15 23:31

投稿

yymmt
yymmt

スコア1615

test CHANGED
@@ -3,6 +3,10 @@
3
3
 
4
4
 
5
5
  ```python
6
+
7
+ import pandas as pd
8
+
9
+ from io import StringIO
6
10
 
7
11
  from copy import deepcopy
8
12
 
@@ -28,15 +32,7 @@
28
32
 
29
33
  return new_df
30
34
 
31
- ```
32
35
 
33
-
34
-
35
- ```python
36
-
37
- import pandas as pd
38
-
39
- from io import StringIO
40
36
 
41
37
 
42
38