字典创建

本文介绍了Python中创建字典的八种实用方法,包括直接赋值、使用dict构造函数、利用字典推导式等,并展示了每种方法的具体实现案例。

1.创建空字典

>>> dic = {}
>>> type(dic)
<type 'dict'>

2.直接赋值创建

>>> dic = {'spam':1, 'egg':2, 'bar':3}
>>> dic
{'bar': 3, 'egg': 2, 'spam': 1}

3.通过关键字dict和关键字参数创建

>>> dic = dict(spam = 1, egg = 2, bar =3)
>>> dic
{'bar': 3, 'egg': 2, 'spam': 1}

4.通过二元组列表创建

>>> list = [('spam', 1), ('egg', 2), ('bar', 3)]
>>> dic = dict(list)
>>> dic
{'bar': 3, 'egg': 2, 'spam': 1}

5.dict和zip结合创建

>>> dic = dict(zip('abc', [1, 2, 3]))
>>> dic
{'a': 1, 'c': 3, 'b': 2}

6.通过字典推导式创建

>>> dic = {i:2*i for i in range(3)}
>>> dic
{0: 0, 1: 2, 2: 4}

7.通过dict.fromkeys()创建
通常用来初始化字典, 设置value的默认值

>>> dic = dict.fromkeys(range(3), 'x')
>>> dic
{0: 'x', 1: 'x', 2: 'x'}

8.其他

>>> list = ['x', 1, 'y', 2, 'z', 3]
>>> dic = dict(zip(list[::2], list[1::2]))
>>> dic
{'y': 2, 'x': 1, 'z': 3}
<think>我们参考了多个引用,其中引用[1]、[2]、[3]、[4]都提到了使用字典创建DataFrame的方法。总结如下: 1. 基本方法:使用一个字典,键作为列名,值(列表)作为对应列的数据。 2. 字典的值可以是列表(长度一致),也可以是字典(但这样会创建索引,如引用[3]的第二部分)。 3. 可以使用字典列表(list of dictionaries)来创建,其中每个字典代表一行,键为列名,值为对应单元格的数据(允许缺失值,用NaN填充)。 根据用户需求,用户想查找使用字典创建DataFrame的方法,我们重点介绍最常用的方法。 步骤: 1. 导入pandas库 2. 创建一个字典,键为列名,值为该列的数据(列表形式,所有列表长度应相同,否则会出错;但如果是字典列表形式则不必一致,缺失值用NaN填充) 3. 将字典传递给pd.DataFrame()函数。 示例1:字典的每个键对应的值是一个列表(最常用) 示例2:使用字典列表(每行一个字典,键为列名,值为该行该列的值) 我们根据引用内容给出两个示例。 另外,引用[4]还提到了其他创建DataFrame的方法,但用户只关心字典创建,所以我们只回答字典创建的部分。 注意:引用[3]中给出了两种不同的字典创建方式: - 方式一:字典列表(每个字典是一行) - 方式二:字典(每个键对应一列) 用户问题中要求使用字典创建,这两种方式都是,但第二种方式(字典的键是列名,值是整个列)更为常见。 因此,我们分别给出这两种方式的示例。 </think>### 使用字典创建DataFrame的方法 在Pandas中,使用字典创建DataFrame是最常见的方法之一。以下是详细步骤和示例: #### 1. **基础创建方法** 字典的键(key)自动成为DataFrame的列名,值(value)必须是等长的列表或数组,对应列的数据: ```python import pandas as pd data = { '姓名': ['张三', '李四', '王五'], '年龄': [23, 25, 22], '城市': ['北京', '上海', '广州'] } df = pd.DataFrame(data) print(df) ``` 输出: ``` 姓名 年龄 城市 0 张三 23 北京 1 李四 25 上海 2 王五 22 广州 ``` #### 2. **字典列表创建法** 当数据以行为单位时,可使用字典列表(每个字典代表一行): ```python data = [ {"姓名": "张三", "年龄": 23, "城市": "北京"}, {"姓名": "李四", "年龄": 25, "城市": "上海"}, {"姓名": "王五", "城市": "广州"} # 缺失年龄字段,自动填充NaN ] df = pd.DataFrame(data) print(df) ``` 输出: ``` 姓名 年龄 城市 0 张三 23.0 北京 1 李四 25.0 上海 2 王五 NaN 广州 ``` #### 3. **嵌套字典创建法** 适合创建带多层索引的DataFrame(键作为列名,内层键作为行索引): ```python data = { '成绩': {'张三': 90, '李四': 85, '王五': 92}, '等级': {'张三': 'A', '李四': 'B', '王五': 'A+'} } df = pd.DataFrame(data) print(df) ``` 输出: ``` 成绩 等级 张三 90 A 李四 85 B 王五 92 A+ ``` ### 关键注意事项 1. **数据对齐**: - 字典值长度必须一致(基础方法) - 字典列表允许缺失值,自动填充`NaN`(如示例2) 2. **自定义索引**: 通过`index`参数指定行索引: ```python df = pd.DataFrame(data, index=['S1', 'S2', 'S3']) ``` 3. **列顺序控制**: 使用`columns`参数显式定义列顺序: ```python df = pd.DataFrame(data, columns=['城市', '姓名', '年龄']) ``` ### 应用场景 - 从API获取的JSON数据(通常为字典结构) - 快速构建小型测试数据集 - 结构转换(如将Scrapy爬取的字典数据转为表格)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值