如何从元组列表与普通列表生成含多列的DataFrame?
解决方案:合并不同格式列表生成目标DataFrame
我来帮你搞定这个问题,其实有好几种灵活的方法可以实现你的需求,不管后续遇到什么格式的列表,都能轻松适配:
方法1:先转l1为DataFrame,再添加l2作为新列
这应该是最直观的方式,和你现在的操作衔接起来也最顺畅:
import pandas as pd l1 = [(1,2),(3,4),(5,6)] l2 = [7,8,9] # 先把元组列表转成DataFrame df = pd.DataFrame(l1, columns=['c1', 'c2']) # 直接把l2赋值给新列c3 df['c3'] = l2
这样就能得到你想要的结果,而且如果之后有其他类似的一维列表要添加,直接用df['新列名'] = 新列表就可以。
方法2:构造DataFrame时一次性传入所有数据
如果你想一步到位,可以直接把l1拆分成两列,再和l2组合成字典传入DataFrame:
import pandas as pd l1 = [(1,2),(3,4),(5,6)] l2 = [7,8,9] # 把l1的元组拆成两个独立的列表,再和l2一起构造字典 df = pd.DataFrame({ 'c1': [x[0] for x in l1], 'c2': [x[1] for x in l1], 'c3': l2 })
这种方法适合一开始就明确所有列数据的情况,格式更清晰,也方便扩展更多列。
方法3:用pd.concat合并两个DataFrame
如果你的l2之后可能是其他结构(比如也是元组列表或者另一个DataFrame),用pd.concat会更通用:
import pandas as pd l1 = [(1,2),(3,4),(5,6)] l2 = [7,8,9] # 把l1转成DataFrame,把l2转成单列DataFrame df1 = pd.DataFrame(l1, columns=['c1', 'c2']) df2 = pd.DataFrame(l2, columns=['c3']) # 按列合并 df = pd.concat([df1, df2], axis=1)
这个方法的优势在于不管l2是什么格式,只要能转成DataFrame,就能轻松合并,完美适配你说的「处理多种不同格式列表」的需求。
测试上面的方法,最终输出的DataFrame都是你想要的样子:
c1 c2 c3 0 1 2 7 1 3 4 8 2 5 6 9
内容的提问来源于stack exchange,提问作者Atihska
相关产品推荐
相关产品推荐

