回答編集履歴

2

groupby と内包表記使用コード追加

2021/10/16 05:25

投稿

lehshell
lehshell

スコア1147

test CHANGED
@@ -1,3 +1,53 @@
1
+ groupby と内包表記使用したコードです。
2
+
3
+ ```Python
4
+
5
+ import pandas as pd
6
+
7
+
8
+
9
+ df = pd.DataFrame({'A':['test1', 'test1', 'test1', 'test2'], 'B':[10, 20, 30, 40], 'C':[0, 0, 1, 1]})
10
+
11
+ print(df)
12
+
13
+ """
14
+
15
+ A B C
16
+
17
+ 0 test1 10 0
18
+
19
+ 1 test1 20 0
20
+
21
+ 2 test1 30 1
22
+
23
+ 3 test2 40 1
24
+
25
+ """
26
+
27
+ lst = [[['A',s]]+[['B']+list(dfs['B'])]+[['C']+list(dfs['C'])] for s, dfs in df.groupby('A')]
28
+
29
+ pd.DataFrame(sum(lst,[])).to_csv('testABC.csv', header=False, index=False)
30
+
31
+ """ testABC.csv
32
+
33
+ A,test1,,
34
+
35
+ B,10,20,30
36
+
37
+ C,0,0,1
38
+
39
+ A,test2
40
+
41
+ B,40
42
+
43
+ C,1
44
+
45
+ """
46
+
47
+ ```
48
+
49
+
50
+
1
51
  test1 と test2 で分けて csv 出力するコードです。
2
52
 
3
53
  ```Python

1

test1 と test2 で分けて csv 出力を追加

2021/10/16 05:25

投稿

lehshell
lehshell

スコア1147

test CHANGED
@@ -1,3 +1,83 @@
1
+ test1 と test2 で分けて csv 出力するコードです。
2
+
3
+ ```Python
4
+
5
+ import pandas as pd
6
+
7
+
8
+
9
+ df = pd.DataFrame({'A':['test1', 'test1', 'test1', 'test2'], 'B':[10, 20, 30, 40], 'C':[0, 0, 1, 1]})
10
+
11
+ print(df)
12
+
13
+ """
14
+
15
+ A B C
16
+
17
+ 0 test1 10 0
18
+
19
+ 1 test1 20 0
20
+
21
+ 2 test1 30 1
22
+
23
+ 3 test2 40 1
24
+
25
+ """
26
+
27
+ df_1 = df[df['A'].apply(lambda x: x == 'test1')].T
28
+
29
+ df_1.iloc[0,1:] = ''
30
+
31
+ df_2 = df[df['A'].apply(lambda x: x == 'test2')].T
32
+
33
+ df_2.iloc[0,1:] = ''
34
+
35
+ df_1.to_csv("test.csv", index=False, header=None)
36
+
37
+ df_2.to_csv("test.csv", mode='a', index=False, header=None)
38
+
39
+ """ test.csv
40
+
41
+ test1,,
42
+
43
+ 10,20,30
44
+
45
+ 0,0,1
46
+
47
+ test2
48
+
49
+ 40
50
+
51
+ 1
52
+
53
+ """
54
+
55
+ df_1.to_csv("testABC.csv", header=None)
56
+
57
+ df_2.to_csv("testABC.csv", mode='a', header=None)
58
+
59
+ """ testABC.csv
60
+
61
+ A,test1,,
62
+
63
+ B,10,20,30
64
+
65
+ C,0,0,1
66
+
67
+ A,test2
68
+
69
+ B,40
70
+
71
+ C,1
72
+
73
+ """
74
+
75
+ ```
76
+
77
+
78
+
79
+ 以下、前回のコードです。
80
+
1
81
  期待していることはこういうことでしょうか?
2
82
 
3
83
  ```Python