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

如何使用循环将列表数据添加至Pandas DataFrame?

问题描述

我需要通过循环向Pandas的单元格中添加数据。目前我可以直接创建DataFrame得到目标结果,代码如下:

import pandas as pd

host = ['R1','R2','R3','R4','R5']
ip = ['192.168.1.10','192.168.1.20','192.168.1.30','192.168.1.40','192.168.1.50']

data = pd.DataFrame({'Hostname' : host,'IP Address' : ip})

# 用这种方式创建的DataFrame结果如下:
data

输出结果:

Hostname    IP Address
0   R1         192.168.1.10
1   R2         192.168.1.20
2   R3         192.168.1.30
3   R4         192.168.1.40
4   R5         192.168.1.50

但我的需求是通过循环把host和ip列表的内容添加进去,现有循环框架如下:

for h,i in zip(host,ip):
    # 这里需要编写代码

希望最终得到和直接创建方式完全相同的DataFrame结果。请问循环内的代码该怎么写?


解决方案

方法1:初始化空DataFrame,循环内逐行追加

先创建指定列名的空DataFrame,循环中将每组h和i构造成字典,通过append方法添加到DataFrame中,设置ignore_index=True保证索引连续:

import pandas as pd

host = ['R1','R2','R3','R4','R5']
ip = ['192.168.1.10','192.168.1.20','192.168.1.30','192.168.1.40','192.168.1.50']

# 初始化空DataFrame并指定列名
data = pd.DataFrame(columns=['Hostname', 'IP Address'])

for h,i in zip(host,ip):
    # 构造单行数据并追加
    data = data.append({'Hostname': h, 'IP Address': i}, ignore_index=True)

print(data)

方法2:循环收集数据列表,最后转成DataFrame(更高效)

Pandas频繁追加行的效率较低,更优的方式是先通过循环把数据存入列表,最后一次性转换为DataFrame:

import pandas as pd

host = ['R1','R2','R3','R4','R5']
ip = ['192.168.1.10','192.168.1.20','192.168.1.30','192.168.1.40','192.168.1.50']

# 初始化空列表存储数据
data_list = []

for h,i in zip(host,ip):
    # 将每组数据转为字典加入列表
    data_list.append({'Hostname': h, 'IP Address': i})

# 列表转DataFrame
data = pd.DataFrame(data_list)

print(data)

注意事项

  • 方法1每次append都会生成新的DataFrame对象,数据量大时性能较差,优先选方法2。
  • 实际生产场景中,直接用pd.DataFrame({'Hostname': host, 'IP Address': ip})是最优方案,因为Pandas对向量式操作做了专门优化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 11:22:41