You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python从不同列表创建指定格式的DataFrame?

简洁实现方法

这里提供两种简洁优雅的实现方式,都能快速生成你需要的DataFrame:

方法一:利用Pandas Series索引对齐特性(推荐)

这种方法充分利用Pandas的内置功能,代码简洁且高效:

import pandas as pd

# 定义原始数据
volumes1 = ['Shield', 'Side', 'expHall', 'Funnel', 'gridpiece']
counts1 = [3911, 1479, 553, 368, 342]
volumes2 = ['Shield', 'leg', 'Funnel', 'gridpiece','wafer']
counts2 = [291, 469, 73, 28, 32]

# 将两组数据转换为Series,索引为volume名称
series1 = pd.Series(counts1, index=volumes1, name='counts1')
series2 = pd.Series(counts2, index=volumes2, name='counts2')

# 获取所有唯一的volume名称
all_volumes = series1.index.union(series2.index)

# 重新索引并填充缺失值为0,合并为DataFrame
result_df = pd.concat(
    [series1.reindex(all_volumes, fill_value=0), 
     series2.reindex(all_volumes, fill_value=0)],
    axis=1
).reset_index().rename(columns={'index': 'volumes'})

print(result_df)

核心逻辑是通过reindex自动对齐索引,缺失的位置用0填充,再合并成表格,完全匹配你需要的输出格式。

方法二:字典映射法(逻辑直观,适合新手理解)

如果想更清晰地看到数据填充过程,可以用字典来存储每个volume的计数:

import pandas as pd
from collections import defaultdict

# 定义原始数据
volumes1 = ['Shield', 'Side', 'expHall', 'Funnel', 'gridpiece']
counts1 = [3911, 1479, 553, 368, 342]
volumes2 = ['Shield', 'leg', 'Funnel', 'gridpiece','wafer']
counts2 = [291, 469, 73, 28, 32]

# 初始化字典,默认counts1和counts2都为0
volume_counts = defaultdict(lambda: {'counts1': 0, 'counts2': 0})

# 填充第一组数据
for vol, cnt in zip(volumes1, counts1):
    volume_counts[vol]['counts1'] = cnt

# 填充第二组数据
for vol, cnt in zip(volumes2, counts2):
    volume_counts[vol]['counts2'] = cnt

# 转换为DataFrame
result_df = pd.DataFrame.from_dict(volume_counts, orient='index').reset_index()
result_df.rename(columns={'index': 'volumes'}, inplace=True)

print(result_df)

这种方法通过字典的默认值特性,自动给不存在的volume初始化0值,再逐个填充已有数据,逻辑清晰易懂。

内容的提问来源于stack exchange,提问作者saimon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 21:15:36