質問編集履歴

2

説明不足だったため更新

2021/06/30 08:55

投稿

WatanabeJin
WatanabeJin

スコア44

test CHANGED
File without changes
test CHANGED
@@ -67,3 +67,83 @@
67
67
  df = pd.DataFrame({'属性':zoku, 'コメント':comment, 'フラグ':flag})
68
68
 
69
69
  ```
70
+
71
+
72
+
73
+ 追記
74
+
75
+ 説明足らずで申し訳ございません。
76
+
77
+ データフレームは用意されていると仮定していますので、データフレーム作成に利用したリストはないものと考えていただければと思います。(df['コメント'].tolist()などで一応可能ですが、もうすこしスマートな方法があれば知りたいです)
78
+
79
+
80
+
81
+ また、「おはようございます。今日もいい天気ですね。どこに行きますか」などは2行ではなく3行になる想定です。
82
+
83
+
84
+
85
+ | 属性 | コメント | フラグ |
86
+
87
+ | ---- | -------------------- | ------ |
88
+
89
+ | 患者 | おはようございます。 | 1 |
90
+
91
+ | 患者 | 今日もいい天気ですね | 1 |
92
+
93
+ | 患者 | どこに行きますか | 1 |
94
+
95
+ | 患者 | はい | 0 |
96
+
97
+ | 医師 | かしこまりました。 | 0 |
98
+
99
+
100
+
101
+
102
+
103
+ すでに多くの回答を頂きまして、ありがとうございます。説明不足でしたので追記させていただきました。
104
+
105
+
106
+
107
+ 私が試したのは以下になります。もっとスマートなものがあれば教えていただきたいです。
108
+
109
+
110
+
111
+
112
+
113
+ ```
114
+
115
+ import pandas as pd
116
+
117
+ zoku = ["患者", "患者", "医師", "患者"]
118
+
119
+ comment = ["おはようございます。今日もいい天気ですね", "はい", "かしこまりました。", "いいえ。そうではないです。"]
120
+
121
+ flag = [1, 0, 0, 0]
122
+
123
+ df = pd.DataFrame({'属性':zoku, 'コメント':comment, 'フラグ':flag})
124
+
125
+
126
+
127
+ def split_comment(df, index, index_list, comment_list):
128
+
129
+ # 日本語の文章では|は利用されないと想定して区切り文字にする
130
+
131
+ for comment in df["コメント"].replace('。','。|').split('|'):
132
+
133
+ if comment != '':
134
+
135
+ index_list.append(index)
136
+
137
+ comment_list.append(comment)
138
+
139
+
140
+
141
+ index_list = []
142
+
143
+ comment_list = []
144
+
145
+ df.apply(lambda x: split_comment(x, x.name, index_list, comment_list), axis=1)
146
+
147
+ comment_df = pd.DataFrame({'コメント':comment_list}, index=index_list)
148
+
149
+ ```

1

コード追加

2021/06/30 08:55

投稿

WatanabeJin
WatanabeJin

スコア44

test CHANGED
File without changes
test CHANGED
@@ -47,3 +47,23 @@
47
47
 
48
48
 
49
49
  データフレームでこのような動作をうまく行う方法が思いつかなかったので教えていただきたいです。
50
+
51
+
52
+
53
+ データフレームは以下で作成可能です。
54
+
55
+
56
+
57
+ ```
58
+
59
+ import pandas as pd
60
+
61
+ zoku = ["患者", "患者", "医師"]
62
+
63
+ comment = ["おはようございます。今日もいい天気ですね", "はい", "かしこまりました。"]
64
+
65
+ flag = [1, 0, 0]
66
+
67
+ df = pd.DataFrame({'属性':zoku, 'コメント':comment, 'フラグ':flag})
68
+
69
+ ```