如何动态创建嵌套列表并构建符合要求的Pokémon Pandas DataFrame
解决宝可梦多属性的Pandas DataFrame创建问题
核心解决思路是:将每个宝可梦的属性存入子列表,让Type列表的长度与其他属性列表(如Name、Height)保持一致,不管单个宝可梦有1个还是多个属性。
直接构造符合要求的字典
手动构造字典时,哪怕是单属性的宝可梦,也用子列表包裹其属性值:
import pandas as pd # 每个宝可梦的Type对应一个子列表,长度与Name、Height一致 pokemon_data = { 'Name': ['Bulbasaur', 'Charmander', 'Charmeleon'], 'Height': [7, 6, 11], 'Type': [['Grass', 'Poison'], ['Fire'], ['Fire']] } # 成功生成DataFrame df = pd.DataFrame(pokemon_data) print(df)
输出结果:
Name Height Type 0 Bulbasaur 7 [Grass, Poison] 1 Charmander 6 [Fire] 2 Charmeleon 11 [Fire]
从原始数据批量转换
如果你的原始属性数据是用分隔符(如/、,)拼接的字符串,可以通过列表推导式批量转为嵌套列表:
# 假设原始Type数据是带分隔符的字符串 raw_type_data = ['Grass/Poison', 'Fire', 'Fire'] # 分割字符串并转为子列表 processed_types = [item.split('/') for item in raw_type_data] # 整合进字典 pokemon_data = { 'Name': ['Bulbasaur', 'Charmander', 'Charmeleon'], 'Height': [7, 6, 11], 'Type': processed_types } df = pd.DataFrame(pokemon_data)
这种方式会自动处理单/多属性的情况,确保Type列表的长度与其他属性完全匹配,顺利生成有效的DataFrame。
内容的提问来源于stack exchange,提问作者Rakesh
相关产品推荐
相关产品推荐

