提问人:LoC 提问时间:5/21/2019 最后编辑:LoC 更新时间:5/22/2019 访问量:135
如何使用 pandas 处理子列表和 dataframe?
How to deal with sublists and dataframe with 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 文件文件中以以下方式结束:
我真的不知道如何进行 - 如果这可能的话? 欢迎任何帮助:)谢谢!
答:
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"))
希望这会有所帮助。
评论
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,然后我会尝试解决以避免这种情况。
评论