我在数据框中有一列,其中包含大约1,4M行的聊天对话,每个单元格中的常规格式为(1):
'姓名代理 : 对话'
但是,并非列中的所有单元格都采用这种格式。有些单元格只是(2):
'对话'
我使用以下代码为结构如(1)的单元格仅获取 conversation :
only_transcripts['msgText'] = only_transcripts['msgText'].str.partition(':', expand = True)[2]
但是,很明显,如果单元格中不包含冒号(:),则此代码不返回任何内容。
有没有一种快速的方法,可以避免for循环遍历每个实例,而仅将上述代码应用于包含冒号的单元格中?
答案 0 :(得分:2)
在原始列中添加Series.fillna
来替换NaN
,这也是使用split
并通过索引查找第二个列表的另一种解决方案
only_transcripts['msgText'] =(only_transcripts['msgText'].str.split(':')
.str[1]
.fillna(only_transcripts['msgText']))