管理具有多个属性和(重叠)顺序条件的名称列表

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中描述的分类法,您可以影响 不同的列

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java将值插入sql表的选定列。使用c等参数#   IF语句的java JList数据添加   java在这种情况下有没有更好的方法来调整哈希值?   java@Valid不会触发@Repository中的验证   java如何在安卓中调整位图的大小   iTextJava。lang.NoClassDefFoundError:com/itextpdf/text/DocumentException   java使用ResourceBundleMessageSource加载一个ressource包(message.properties)的全部内容   java如何通过JasperReports 6动态设置Excel工作表名称。十、   java是编写这个程序的最佳方式   JAVA伊奥。FileNotFoundException:C:\Program Files\Apache软件基金会\Tomcat 8.0\。。\webapps\ROOT\\u cips\config。伊尼   java我正在尝试创建一个TictaToe程序,但是JOptionPane和绘图有问题   垃圾收集为什么java中的finalize()方法不在Finalizer类中?为什么它是在对象类中定义的?   java如何用括号编码替换url中的括号?   java web集成移动应用程序   在netbeans中运行MIDP2应用程序时出现java错误