如何在Pandas中为DataFrame新增序号列表列与键值字典列
实现方法
完整代码
import pandas as pd # 初始化原始DataFrame df = pd.DataFrame( [["X", ["A", "B", "C", "D"]], ["Y", ["E", "F", "G"]], ["Z", ["H", "I", "J", "K", "L"]]], columns=["type", "id"] ) # 新增id_len列:生成从1开始的序号列表 df['id_len'] = df['id'].apply(lambda x: list(range(1, len(x)+1))) # 新增id_dict列:生成序号与对应id元素的字典 df['id_dict'] = df.apply(lambda row: dict(zip(row['id_len'], row['id'])), axis=1) # 查看结果 print(df)
代码说明
- id_len列生成:通过
apply遍历id列的每个列表,用range(1, len(x)+1)生成从1到列表长度的整数序列,再转为列表,刚好匹配每个元素从1开始的序号。 - id_dict列生成:指定
axis=1对每一行处理,用zip将id_len和id的元素一一配对,再通过dict()转换为键值对字典。
输出结果
| type | id | id_len | id_dict |
|---|---|---|---|
| X | ['A', 'B', 'C', 'D'] | [1, 2, 3, 4] | {1: 'A', 2: 'B', 3: 'C', 4: 'D'} |
| Y | ['E', 'F', 'G'] | [1, 2, 3] | {1: 'E', 2: 'F', 3: 'G'} |
| Z | ['H', 'I', 'J', 'K', 'L'] | [1,2,3,4,5] | {1: 'H', 2: 'I', 3: 'J', 4: 'K', 5: 'L'} |
内容的提问来源于stack exchange,提问作者Chethan
相关产品推荐
相关产品推荐

