在pandas dataframe列中解压缩并打印元组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在pandas dataframe列中解压缩并打印元组相关的知识,希望对你有一定的参考价值。

我有一个pandas数据帧,df:

Search term                                 Match type
second hand proace toyota crew cab sale     Broad match
bmw m5 buy                                  Exact match

我想将nltk包中的ngrams应用于Search term列。 ngrams函数将返回一个元组。

我想只将短语作为最终输出,如下所示:

Phrases
second hand
hand proace
proace toyota
toyota None
bmw m5
m5 buy
buy None

这是我到目前为止已经想到的:

df['Phrases'] = df['Search term'].apply(lambda x: list(ngrams([x for x in x.split()], 2, pad_right=True)))

这是上面代码的输出:

Search term                   Match type      Phrases
second hand proace toyota     Broad match     [('second', 'hand'), ('hand', 'proace'), ('proace', 'toyota'), ('toyota', None)]
bmw m5 buy                    Broad match     [('bmw', 'm5'), ('m5', 'buy'), ('buy', None)]

如何解压缩列表中的所有元组并使用逗号和括号打印它们?

答案

基于@Chris答案:

['{} {}'.format(i, j) for i, j in np.concatenate(df.Phrases)]

结果将在列表中,因此您可以使用pd.DataFrame()将其转换为数据框。

如果是三元组,只需将其更改为:

['{} {} {}'.format(i, j, k) for i, j, k in np.concatenate(df.Phrases)]

以上是关于在pandas dataframe列中解压缩并打印元组的主要内容,如果未能解决你的问题,请参考以下文章

Pandas Dataframe - 如何检查列中数值的符号,如果为负则删除符号并在发生这种情况时创建另一列?

修改pandas dataframe列中的字符串

在Python中的Dataframe中查找遵循趋势的值

pandas使用len函数和max函数计算dataframe中指定字符串数据列中字符串的最大长度并使用np.where函数筛选dataframe中字符串的最大长度所对应的数据行

Pandas:按行从 DataFrame 的特定列中选择值

Pandas 将 CSV 列中的 '\0' 读取为 NULL 字符并在 JSON 中打印为 Unicode