我有一个多列的df,需要从中处理不同范围的列.

在Pandas中,我可以使用如下代码的表达式:df.loc[:,‘first_name’:‘last_name’]来获取两个端点之间所需的列.在POLARS中有没有类似功能,不需要列出每个所需范围内的所有大量列名?

推荐答案

由于df.columns只是一个列表,您可以使用.index方法找到它们的位置.通过Eager[] API或.select接口可以按如下方式完成此操作:

import polars as pl

def inclusive(target, a, b):
    start, stop = target.columns.index(a), target.columns.index(b)
    return pl.col(target.columns[start:stop+1])


df = pl.DataFrame({
    'date':        ['2000-01-01', '2000-01-02'],
    'first_name':  ['Alice',      'Bob'       ],
    'middle_name': [None,         'Edward'    ],
    'last_name':   ['Smith',      'Jones'     ],
    'standing':    ['good',       'bad'],
})

print(
    df[:, 'first_name':'last_name'], # eager [] selection
    # shape: (2, 3)
    # ┌────────────┬─────────────┬───────────┐
    # │ first_name ┆ middle_name ┆ last_name │
    # │ ---        ┆ ---         ┆ ---       │
    # │ str        ┆ str         ┆ str       │
    # ╞════════════╪═════════════╪═══════════╡
    # │ Alice      ┆ null        ┆ Smith     │
    # │ Bob        ┆ Edward      ┆ Jones     │
    # └────────────┴─────────────┴───────────┘

    df.select(inclusive(df, 'first_name', 'last_name')),
    # shape: (2, 3)
    # ┌────────────┬─────────────┬───────────┐
    # │ first_name ┆ middle_name ┆ last_name │
    # │ ---        ┆ ---         ┆ ---       │
    # │ str        ┆ str         ┆ str       │
    # ╞════════════╪═════════════╪═══════════╡
    # │ Alice      ┆ null        ┆ Smith     │
    # │ Bob        ┆ Edward      ┆ Jones     │
    # └────────────┴─────────────┴───────────┘


    sep='\n\n',
)

Python相关问答推荐

如何才能知道Python中2列表中的巧合.顺序很重要,但当1个失败时,其余的不应该失败或是0巧合

Python会扔掉未使用的表情吗?

Pytest两个具有无限循环和await命令的Deliverc函数

如何避免Chained when/then分配中的Mypy不兼容类型警告?

为什么带有dropna=False的groupby会阻止后续的MultiIndex.dropna()工作?

使可滚动框架在tkinter环境中看起来自然

大小为M的第N位_计数(或人口计数)的公式

如何在Django基于类的视图中有效地使用UTE和RST HTIP方法?

如何过滤包含2个指定子字符串的收件箱列名?

多指标不同顺序串联大Pandas 模型

如何获取Python synsets列表的第一个内容?

为什么Python内存中的列表大小与文档不匹配?

将一个双框爆炸到另一个双框的范围内

如何使用正则表达式修改toml文件中指定字段中的参数值

从一个df列提取单词,分配给另一个列

裁剪数字.nd数组引发-ValueError:无法将空图像写入JPEG

如何用FFT确定频变幅值

极柱内丢失类型信息""

如何在Python中从html页面中提取html链接?

如何通过函数的强式路径动态导入函数?