问题描述
我正在尝试将非结构化数据转换为 Python 中的结构化数据,因此需要一些帮助。我的数据集有一个名为“评论”的自由文本列,此时有 143 行。我需要根据 Comments 列中的信息创建三个附加字段。下面是示例输入数据。我需要提取 Phone_Call、Successful 和 Yes 作为三个词,然后将它们输入到单独的列中。其余的对我来说都是无用的信息。
-- 类型:Phone_Call 联系尝试:成功 验证完成:是 注意:联系了客户并且联系尝试成功,完成验证。
-- Type:Email Contact Attempt:Unsuccessful Validation Complete:No 注意:联系客户并且联系尝试成功,完成验证。
这就是我处理这个问题的方式:
- 我将 Comments 列转换为 String 类型。
- 我创建了一个 for 循环来拆分每一行的评论(我在空格处拆分)
- 我将创建第二个嵌套 for 循环,然后选择第 3 个、第 7 个和第 10 个单词
- 最后,我将创建第三个嵌套循环,然后将第 3 个、第 7 个和第 10 个单词转移到三个不同的列中。
我已经能够完成第 1 步和第 2 步,但在那之后我有点卡住了。不确定如何创建嵌套的 for 循环。有什么建议么?到目前为止,我编写的代码如下:
comments = df['COMMENTS'].astype(str)
for i in range(len(comments)): (str.split(comments[i]))
谢谢!
解决方法
数组拼接将成为您的朋友。
a="Type:Phone_Call Contact Attempt:Successful Validation
Complete:Yes Notes: Reached out to the customer and contact
attempt was successful,completed validation"
b= a.split(" ")
c=[None,None,None]
c[0]=b[0][5:]
c[1]=b[2][7:]
如果“垃圾”在“:”字符之前发生变化,您可以使用 index(":") 设置拼接标记。
,我能够解决它!感谢卡车装载@IGotThis。你的建议让我开始了。这是我的完整代码。
comments = df['COMMENTS'].tolist()
# For loop to split the comments list by whitespace and store in list e
e = []
for i in range(len(comments)):
e.append(str.split(comments[i]))
#Extract all the important information and store in list c
c = []
for j in range(len(e)):
c.append(e[j][2][0:])
c.append(e[j][6][0:])
c.append(e[j][9][0:])
#Split list c into groups of 3 elements and write to a new dataframe
data = list(zip(*[iter(c)]*3))
f= pd.DataFrame(data[0:],columns=['Contact Type','Contact Made','Verification Complete'])