管理具有多个属性和(重叠)顺序条件的名称列表
carbonium的Python项目详细描述
碳
轻松管理一个包含多个 属性和(重叠)顺序条件。
安装
安装碳素和运行一样简单
pip install carbonium
用法
作为第一步,您应该定义一个名称列表:
name_list=[{"domains":["raw","output"],"name":"var1","alias":"column_1_name","output_order":1,"filling_value":10,},{"domains":["raw"],"name":"var2","alias":"column_2_name","output_order":2,},{"domains":["new","output"],"name":"new_var","alias":"new_column_name",},]
每个name定义都是一个字典 包含一些通用的、必需的密钥,以及一些 其他密钥,特定于域或特定于名称。
强制密钥只有三个:
- 域,一个字符串列表,每个字符串代表一个domain
- 名称,字符串,aname的唯一标识符
- 别名,一个字符串,可用于引用 上下文中使用其命名的名称 这个替代字符串。
然后,每个名称都属于某些域。域 用于执行名称选择(全部给我 属于domain的名称。属于的名字 到同一个域应该有相同的可选 属性。
在name list定义之后,可以实例化 结构类:
fromcarboniumimportStructurestructure=Structure(name_list)
在内部,structure类迭代地实例化
每个name定义的名称类。在这之后
步骤可以访问每个名称及其属性
通过c
对象,但也可以使用
类的属性或方法
print(structure.names)# returns: ['var1', 'var2', 'new_var']print(structure.domains)# returns: {'new', 'output', 'raw'}print(structure.var1.name,structure.var1.domains,structure.var1.output_order)
调用structure.var1.name您可以访问 与var1关联的字符串等等。
ordered_raw_columns=[(i,structure.get(i).output_order,structure.get(i).get("filling_value"))foriinstructure.get_names('raw')]ordered_raw_columns=sorted(ordered_raw_columns,key=lambdax:x[1])
在本例中,属于raw的所有名称 域是用其他一些属性提取的。 这样相同的名字就可以用在不同的 域或上下文通过引用contexctual 相关财产。
importpandasaspddf=pd.DataFrame([{"var1":100,"var2":200},{"var2":220},])fornameinstructure.get_names('raw'):alias=structure.get(name).aliasfilling=structure.get(name).get("filling_value")iffilling:df[alias].fillna(filling,inplace=True)fornameinstructure.get_names('new'):alias=structure.get(name).aliasdf[alias]="arbitrary"output_columns=structure.get_names('new')df[output_columns].to_parquet('output.parquet')
如您所见,不需要修改代码,但只需要 在name_list中描述的分类法,您可以影响 不同的列