teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

説明不足だったため更新

2021/06/30 08:55

投稿

WatanabeJin
WatanabeJin

スコア44

title CHANGED
File without changes
body CHANGED
@@ -32,4 +32,44 @@
32
32
  comment = ["おはようございます。今日もいい天気ですね", "はい", "かしこまりました。"]
33
33
  flag = [1, 0, 0]
34
34
  df = pd.DataFrame({'属性':zoku, 'コメント':comment, 'フラグ':flag})
35
+ ```
36
+
37
+ 追記
38
+ 説明足らずで申し訳ございません。
39
+ データフレームは用意されていると仮定していますので、データフレーム作成に利用したリストはないものと考えていただければと思います。(df['コメント'].tolist()などで一応可能ですが、もうすこしスマートな方法があれば知りたいです)
40
+
41
+ また、「おはようございます。今日もいい天気ですね。どこに行きますか」などは2行ではなく3行になる想定です。
42
+
43
+ | 属性 | コメント | フラグ |
44
+ | ---- | -------------------- | ------ |
45
+ | 患者 | おはようございます。 | 1 |
46
+ | 患者 | 今日もいい天気ですね | 1 |
47
+ | 患者 | どこに行きますか | 1 |
48
+ | 患者 | はい | 0 |
49
+ | 医師 | かしこまりました。 | 0 |
50
+
51
+
52
+ すでに多くの回答を頂きまして、ありがとうございます。説明不足でしたので追記させていただきました。
53
+
54
+ 私が試したのは以下になります。もっとスマートなものがあれば教えていただきたいです。
55
+
56
+
57
+ ```
58
+ import pandas as pd
59
+ zoku = ["患者", "患者", "医師", "患者"]
60
+ comment = ["おはようございます。今日もいい天気ですね", "はい", "かしこまりました。", "いいえ。そうではないです。"]
61
+ flag = [1, 0, 0, 0]
62
+ df = pd.DataFrame({'属性':zoku, 'コメント':comment, 'フラグ':flag})
63
+
64
+ def split_comment(df, index, index_list, comment_list):
65
+ # 日本語の文章では|は利用されないと想定して区切り文字にする
66
+ for comment in df["コメント"].replace('。','。|').split('|'):
67
+ if comment != '':
68
+ index_list.append(index)
69
+ comment_list.append(comment)
70
+
71
+ index_list = []
72
+ comment_list = []
73
+ df.apply(lambda x: split_comment(x, x.name, index_list, comment_list), axis=1)
74
+ comment_df = pd.DataFrame({'コメント':comment_list}, index=index_list)
35
75
  ```

1

コード追加

2021/06/30 08:55

投稿

WatanabeJin
WatanabeJin

スコア44

title CHANGED
File without changes
body CHANGED
@@ -22,4 +22,14 @@
22
22
 
23
23
  「おはようございます。今日もいい天気ですね」を「おはようございます。」「今日もいい天気ですね」に分割して2行にしたいです。コメント列以外はすべて同じになっています。
24
24
 
25
- データフレームでこのような動作をうまく行う方法が思いつかなかったので教えていただきたいです。
25
+ データフレームでこのような動作をうまく行う方法が思いつかなかったので教えていただきたいです。
26
+
27
+ データフレームは以下で作成可能です。
28
+
29
+ ```
30
+ import pandas as pd
31
+ zoku = ["患者", "患者", "医師"]
32
+ comment = ["おはようございます。今日もいい天気ですね", "はい", "かしこまりました。"]
33
+ flag = [1, 0, 0]
34
+ df = pd.DataFrame({'属性':zoku, 'コメント':comment, 'フラグ':flag})
35
+ ```