如何拆分pandas中的嵌套列表

问题描述 投票:0回答:1

我正在处理一个数据集并遇到了一个问题。有一个列,其中有嵌套列出形式的值。例如,这是值

 [Tomatillo-Red Chili Salsa (Hot), [Black Beans, Rice, Cheese, Sour Cream]]
之一。现在我想拆分此值,以便“番茄红辣椒莎莎(热)”进入一个新创建的列,而“黑豆、大米、奶酪、酸奶油”进入另一列。

我尝试过这个方法

choices = Dataset['choice_description'].str.extract(r'\[([^[\]]*)\]', expand=False)

Dataset[['choice1', 'choice2', 'choice3']] = choices.apply(lambda x: pd.Series(str(x).split(', ')))`.

'choice_description' 是具有嵌套列表类型值的列名称。 Choices1、choices2 和 Choices3 是新创建的列。

当我运行上面的代码时,我得到了意想不到的输出,其中“Tomatillo-Red Chili Salsa(Hot)”位于 choice1 列下,这是正确的,但在 choice2 列下我只得到了“Black beans”而不是整个“Black Beans” ,米饭,奶酪,酸奶油”和其余的“米饭,奶酪,酸奶油”位于 choice3 列下。为什么我得到这样的输出。我想要选择 1 列中的“番茄红辣椒莎莎(热)”和选择 2 列中的“黑豆、大米、奶酪、酸奶油”。

python pandas nested-lists
1个回答
0
投票

假设表示嵌套列表的字符串始终具有相同的结构,即“[some item,[list,of,additional,items]”,您可以使用

Dataset[['choice1', 'choice2']] = (
    Dataset['choice_description']
    .str.lstrip('[')
    .str.rstrip(']')
    .str.split(', [', expand=True, regex=False)
)

它很难看且不灵活,但它会让两个部分分开。

© www.soinside.com 2019 - 2024. All rights reserved.