如何从嵌套元组列表生成含4列的Pandas DataFrame
解决嵌套元组列表转4列DataFrame的问题
嘿,别担心,这个问题其实挺容易搞定的!咱们先理清楚现状:你现在的嵌套元组列表直接用pd.DataFrame()转换的话,每个子元组会被当成一列的值,所以得到的是2列,但你需要把每个嵌套元组里的所有元素都拆成单独的列,也就是4列。
首先看你的原始数据:
tup = [((1,1),(1,2)),((2,1),(2,2))]
方法一:先扁平化每行的元素
咱们可以用列表推导式把每个嵌套元组展开成包含4个元素的列表,再转成DataFrame:
import pandas as pd tup = [((1,1),(1,2)),((2,1),(2,2))] # 遍历每个子元组,把两个内部元组的元素合并成一个列表 flattened_rows = [list(item[0]) + list(item[1]) for item in tup] # 转换为DataFrame df = pd.DataFrame(flattened_rows)
运行后你就能得到想要的结果:
0 1 2 3 0 1 1 1 2 1 2 1 2 2
方法二:用DataFrame的apply方法快速转换
如果你想直接基于原始的2列DataFrame来处理,也可以用apply结合pd.Series来展开:
import pandas as pd tup = [((1,1),(1,2)),((2,1),(2,2))] # 先转成2列的DataFrame,再对每行合并元组并展开 df = pd.DataFrame(tup).apply(lambda row: pd.Series(row[0] + row[1]), axis=1)
这个方法会把每行的两个元组合并成一个包含4个元素的元组,再转成Series,自动扩展成4列,结果和上面完全一致。
两种方法都能达到你的需求,选哪个顺手就用哪个~
内容的提问来源于stack exchange,提问作者j36701
相关产品推荐
相关产品推荐

