回答編集履歴
3
テキスト修正
test
CHANGED
@@ -127,3 +127,101 @@
|
|
127
127
|
|
128
128
|
|
129
129
|
参考になれば幸いです。
|
130
|
+
|
131
|
+
|
132
|
+
|
133
|
+
### 追記
|
134
|
+
|
135
|
+
|
136
|
+
|
137
|
+
複数の集合の和集合を作る `set.union` を使うと、上記のコードでリストを連結してから set にしていたのを、集合の演算のみで出来ました。
|
138
|
+
|
139
|
+
|
140
|
+
|
141
|
+
```
|
142
|
+
|
143
|
+
import pandas as pd
|
144
|
+
|
145
|
+
|
146
|
+
|
147
|
+
df_event = pd.read_csv('event.csv')
|
148
|
+
|
149
|
+
|
150
|
+
|
151
|
+
df_event["_協賛会社set"] = [set(lis) for lis in df_event["協賛会社"].str.split('、')]
|
152
|
+
|
153
|
+
|
154
|
+
|
155
|
+
print(df_event[["開催(西暦)", "_協賛会社set"]])
|
156
|
+
|
157
|
+
print('----------')
|
158
|
+
|
159
|
+
|
160
|
+
|
161
|
+
df_count = df_event[
|
162
|
+
|
163
|
+
["開催(西暦)", "_協賛会社set"]
|
164
|
+
|
165
|
+
].groupby("開催(西暦)").agg(lambda sets: len(set.union( * sets.values)))
|
166
|
+
|
167
|
+
|
168
|
+
|
169
|
+
df_count.rename(columns = {
|
170
|
+
|
171
|
+
"_協賛会社set": "協賛会社数"
|
172
|
+
|
173
|
+
}, inplace = True)
|
174
|
+
|
175
|
+
|
176
|
+
|
177
|
+
del df_event["_協賛会社set"]
|
178
|
+
|
179
|
+
|
180
|
+
|
181
|
+
print(df_count)
|
182
|
+
|
183
|
+
|
184
|
+
|
185
|
+
```
|
186
|
+
|
187
|
+
上記を実行すると、下記の出力が得られます。
|
188
|
+
|
189
|
+
|
190
|
+
|
191
|
+
```
|
192
|
+
|
193
|
+
開催(西暦) _協賛会社set
|
194
|
+
|
195
|
+
0 1985 {A社}
|
196
|
+
|
197
|
+
1 1940 {B社}
|
198
|
+
|
199
|
+
2 1999 {D社, C社}
|
200
|
+
|
201
|
+
3 1963 {F社, A社, E社}
|
202
|
+
|
203
|
+
4 1967 {D社, G社}
|
204
|
+
|
205
|
+
5 1999 {C社}
|
206
|
+
|
207
|
+
6 1963 {F社, D社, E社}
|
208
|
+
|
209
|
+
----------
|
210
|
+
|
211
|
+
協賛会社数
|
212
|
+
|
213
|
+
開催(西暦)
|
214
|
+
|
215
|
+
1940 1
|
216
|
+
|
217
|
+
1963 4
|
218
|
+
|
219
|
+
1967 2
|
220
|
+
|
221
|
+
1985 1
|
222
|
+
|
223
|
+
1999 2
|
224
|
+
|
225
|
+
```
|
226
|
+
|
227
|
+
- **動作確認用 Repl.it:** [https://repl.it/@jun68ykt/Q235898-2](https://repl.it/@jun68ykt/Q235898-2)
|
2
テキスト修正
test
CHANGED
@@ -116,7 +116,7 @@
|
|
116
116
|
|
117
117
|
|
118
118
|
|
119
|
-
`_協賛会社list` と `_協賛会社Set` は中間生成物なので、削除したほうがよいと思いますが、コードの意図を明確にするため、残してあります。
|
119
|
+
`_協賛会社list` 列と `_協賛会社Set` 列は中間生成物なので、削除したほうがよいと思いますが、コードの意図を明確にするため、残してあります。
|
120
120
|
|
121
121
|
|
122
122
|
|
1
テキスト修正
test
CHANGED
@@ -60,9 +60,9 @@
|
|
60
60
|
|
61
61
|
|
62
62
|
|
63
|
-
df_count["_協賛会社
|
63
|
+
df_count["_協賛会社set"] = [set(x) for x in df_count["_協賛会社list"]]
|
64
64
|
|
65
|
-
df_count["協賛会社数"] = [len(s) for s in df_count["_協賛会社
|
65
|
+
df_count["協賛会社数"] = [len(s) for s in df_count["_協賛会社set"]]
|
66
66
|
|
67
67
|
|
68
68
|
|
@@ -98,7 +98,7 @@
|
|
98
98
|
|
99
99
|
----------
|
100
100
|
|
101
|
-
_協賛会社list _協賛会社
|
101
|
+
_協賛会社list _協賛会社set 協賛会社数
|
102
102
|
|
103
103
|
開催(西暦)
|
104
104
|
|