回答編集履歴
1
2行以上も対応できるように変更
answer
CHANGED
@@ -1,30 +1,36 @@
|
|
1
1
|
```python
|
2
2
|
import pandas as pd
|
3
3
|
zoku = ["患者", "患者", "医師"]
|
4
|
-
comment = ["おはようございます。今日もいい天気ですね", "はい", "かしこまりました。"]
|
4
|
+
comment = ["おはようございます。今日もいい天気ですね。よろしくお願いします。", "はい", "かしこまりました。"]
|
5
5
|
flag = [1, 0, 0]
|
6
6
|
df = pd.DataFrame({'属性':zoku, 'コメント':comment, 'フラグ':flag})
|
7
7
|
|
8
|
-
# 。
|
8
|
+
# コメントを「。」でリスト分割。リストの長さを変数に代入
|
9
9
|
df['コメント']=df['コメント'].str.replace('。','。 ').str.split()
|
10
|
-
|
10
|
+
df['m']=df['コメント'].apply(lambda x: len(x))
|
11
|
-
df_a
|
12
|
-
df = pd.concat([df,df_a]).sort_index().reset_index(drop=True)
|
13
11
|
|
14
|
-
#
|
12
|
+
# コメントのリストの長さで複製
|
15
|
-
df['id'] = (df==df.shift(1)).all(axis=1)
|
16
|
-
df
|
13
|
+
df = pd.DataFrame(np.repeat(df.reset_index().values,df.m,axis=0),columns=['インデックス','属性','コメント','フラグ','カウント'])
|
17
|
-
df.drop('id',axis=1,inplace=True)
|
18
14
|
|
15
|
+
# リストからの取り出しインデックスを作成
|
16
|
+
df['カウント']=df.groupby('インデックス').expanding().count()['コメント'] .values.astype('int') - 1
|
17
|
+
|
18
|
+
# コメント抽出
|
19
|
+
df['コメント']=df.apply(lambda x: x['コメント'][x['カウント']],axis=1)
|
20
|
+
|
21
|
+
# 不要な列を削除
|
22
|
+
df.drop(['インデックス','カウント'],inplace=True,axis=1)
|
23
|
+
|
19
24
|
"""
|
20
25
|
df
|
21
26
|
|
22
27
|
属性 コメント フラグ
|
23
28
|
0 患者 おはようございます。 1
|
24
|
-
1 患者 今日もいい天気ですね 1
|
29
|
+
1 患者 今日もいい天気ですね。 1
|
30
|
+
2 患者 よろしくお願いします。 1
|
25
|
-
|
31
|
+
3 患者 はい 0
|
26
|
-
|
32
|
+
4 医師 かしこまりました。 0
|
27
33
|
"""
|
28
34
|
```
|
29
35
|
|
30
|
-
いかがでしょうか?
|
36
|
+
いかがでしょうか? 2行以上も対応してみました。
|