【问题标题】:How to deal with sublists and dataframe with pandas?如何使用 pandas 处理子列表和数据框?
【发布时间】:2019-10-07 21:35:29
【问题描述】:

我的项目由多个列表组成 - 我将所有列表与 pandas 放在一个数据框中,以求出类拔萃。 但是我的列表之一包含子列表,我不知道如何处理。

my_dataframe = pd.DataFrame({
        "V1": list1,
        "V2": list2,
        "V3": list3
    })
my_dataframe.to_excel("test.xlsx", sheet_name="Sheet 1", index=False, encoding='utf8')

让我们这么说:

list1=[1,2,3]
list2=['a','b','c']
list3=['d',['a','b','c'],'e']

我想在我的 excel 文件文件中结束:

我真的不知道如何继续 - 如果这可能吗? 欢迎任何帮助:) 谢谢!

【问题讨论】:

  • 也许你要找的答案是here,但是最后添加到excel部分?

标签: pandas python-2.7 list nested-lists


【解决方案1】:

在调用 to_excel 之前试试这个:

my_dataframe = (my_dataframe["V3"].apply(pd.Series)
.merge(my_dataframe.drop("V3", axis = 1), right_index = True, left_index = True)
.melt(id_vars = ['V1', 'V2'], value_name = "V3")
.drop("variable", axis = 1)
.dropna()
.sort_values("V1"))

感谢Bartosz

希望这会有所帮助。

【讨论】:

  • 非常感谢,太完美了!!
  • 你好 cyrilb38 你知道我们是否可以用 2 个包含子列表的列表来做到这一点?我的意思是,如果我收回我的例子,我有一个 list4=['1',['2','3','4'],'5'] 我想和清单 3。我尝试使用您上面放置的代码两次,但这不起作用,并且我找不到在您上面放置的代码中放置 2 个列表的方法。两个列表具有相同的结构。谢谢!
  • 不幸的是,此解决方案不可推广。我建议使用 MaxU 的解决方案:stackoverflow.com/a/40449726/6081921。您首先需要转换您想要展开的列表(list3 和 list4),例如: list3 = [x if isinstance(x, list) else [x] for x in list3]。然后使用explode函数就可以了
  • 谢谢 cyrilb38,我会尽量避免这种情况。
猜你喜欢
  • 2022-12-17
  • 2020-04-30
  • 1970-01-01
  • 2018-11-22
  • 1970-01-01
  • 1970-01-01
  • 2018-08-04
  • 2019-02-13
  • 2016-12-13
相关资源
最近更新 更多