如何用Python从DataFrame列的逗号分隔值填充np.arange生成限制字典
实现DataFrame列拆分并生成指定字典的Python方案
问题背景
现有如下DataFrame:
import pandas as pd import numpy as np df = pd.DataFrame([["X","5,7,7,9"],["Y","20,30,32,48"]],columns=["type","range"])
数据形式如下:
type range X 5,7,7,9 Y 20,30,32,48
需求说明:
将range列的逗号分隔值拆分,前两个值作为对应type的min参数传入np.arange函数,后两个值作为max参数传入np.arange函数,生成以type名为标识的字典(如X_limits、Y_limits),最终预期效果如下:
X_limits['min'] = np.arange(5,7) X_limits['max'] = np.arange(7,9) Y_limits['min'] = np.arange(20,30) Y_limits['max'] = np.arange(32,48)
实现代码
直接遍历DataFrame行,拆分字符串并生成对应字典即可,代码如下:
import pandas as pd import numpy as np # 初始化DataFrame df = pd.DataFrame([["X","5,7,7,9"],["Y","20,30,32,48"]],columns=["type","range"]) # 方式1:用大字典统一存储所有结果 limits_dict = {} # 方式2:动态生成单独的变量(如X_limits、Y_limits) for _, row in df.iterrows(): # 拆分range字符串为整数列表 nums = list(map(int, row['range'].split(','))) # 生成当前type对应的limits字典 current_limits = { 'min': np.arange(nums[0], nums[1]), 'max': np.arange(nums[2], nums[3]) } # 存入大字典 limits_dict[row['type']] = current_limits # 动态创建单独变量(可选) globals()[f"{row['type']}_limits"] = current_limits # 验证结果示例 print(X_limits['min']) print(Y_limits['max'])
代码说明
- 遍历DataFrame每一行,将
range列的字符串按逗号拆分后转换为整数列表; - 取列表前两个元素作为
np.arange的参数生成min对应数组,后两个元素生成max对应数组; - 两种存储方式可选:用大字典
limits_dict统一管理所有结果,或通过globals()动态创建如X_limits的独立变量; np.arange(start, stop)会生成从start开始、到stop结束(不包含stop)的整数序列,完全匹配需求的参数传入逻辑。
内容的提问来源于stack exchange,提问作者Chethan
相关产品推荐
相关产品推荐

