分区(如果适用)

时间:2019-03-12 13:44:06

标签: python pandas dataframe partition

我在数据框中有一列,其中包含大约1,4M行的聊天对话,每个单元格中的常规格式为(1):

'姓名代理 对话'

但是,并非列中的所有单元格都采用这种格式。有些单元格只是(2):

'对话'

我使用以下代码为结构如(1)的单元格仅获取 conversation

only_transcripts['msgText'] = only_transcripts['msgText'].str.partition(':', expand = True)[2]

但是,很明显,如果单元格中不包含冒号(),则此代码不返回任何内容。

有没有一种快速的方法,可以避免for循环遍历每个实例,而仅将上述代码应用于包含冒号的单元格中?

1 个答案:

答案 0 :(得分:2)

在原始列中添加Series.fillna来替换NaN,这也是使用split并通过索引查找第二个列表的另一种解决方案

only_transcripts['msgText'] =(only_transcripts['msgText'].str.split(':')
                                                         .str[1]
                                                         .fillna(only_transcripts['msgText']))