如何使用 pandas 处理子列表和 dataframe?

How to deal with sublists and dataframe with pandas?

提问人:LoC 提问时间:5/21/2019 最后编辑:LoC 更新时间:5/22/2019 访问量:135

问:

我的项目由几个列表组成 - 我将它们与熊猫放在一个数据帧中,以出类拔萃。 但是我的一个列表包含子列表,我不知道如何处理它。

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 文件文件中以以下方式结束:

enter image description here

我真的不知道如何进行 - 如果这可能的话? 欢迎任何帮助:)谢谢!

pandas python-2.7 列表 嵌套列表

评论

0赞 run-out 5/21/2019
也许您正在寻找的答案就在这里,但最后添加 to excel 部分?

答:

0赞 cyrilb38 5/22/2019 #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

希望这会有所帮助。

评论

0赞 LoC 5/22/2019
非常感谢,这太完美了!
0赞 LoC 6/4/2019
你好 cyrilb38 你知道我们是否可以用 2 个包含子列表的列表来做到这一点吗?我的意思是,如果我收回我的例子,我有一个 list4=['1',['2','3','4'],'5'],我想对 list3 做同样的事情。我尝试使用您上面放置的代码的两倍,但这不起作用,并且我找不到在您上面放置的代码中放置 2 个列表的方法。两个列表具有相同的结构。谢谢!
0赞 cyrilb38 6/4/2019
不幸的是,此解决方案不可推广。我建议使用 MaxU 的解决方案:stackoverflow.com/a/40449726/6081921。您首先需要转换要分解的列表(list3 & list4),例如: list3 = [x if isinstance(x, list) else [x] for x in list3]。然后使用explode功能,这应该可以做到
0赞 LoC 6/5/2019
谢谢 cyrilb38,然后我会尝试解决以避免这种情况。