假设,我正在阅读一个有数百列的CSV.

现在,我知道在一个特定的专栏之后,说'XYZ'个专栏所有的专栏都是垃圾.

我想保留从开始到第'XYZ'列的所有列,并删除第'XYZ'列之后的所有列.

在Pandas 身上,我可能会做一些类似的事情:

df.iloc[:, :df.columns.get_loc('XYZ') + 1]

在极地有什么有效的方法?

推荐答案

使用[:]的切片解决方案适用于渴望判断(DataFrame),但据我所知,它不适用于LazyFrame.

如果你想使用lazy evaluation,你可以使用DataFrame.select():

# prepare the data
df = pl.LazyFrame({
    'ABC': [1,2,3],
    'DEF': [4,5,6],
    'XYZ': [7,8,9],
    'garbage1': [10,11,12],
    'garbage2': list('abc')
})
df.sink_csv('test.csv')

现在我们可以扫描它了:

df = pl.scan_csv('test.csv')
df.select(df.columns[:df.columns.index('XYZ')+1]).collect()

┌─────┬─────┬─────┐
│ ABC ┆ DEF ┆ XYZ │
│ --- ┆ --- ┆ --- │
│ i64 ┆ i64 ┆ i64 │
╞═════╪═════╪═════╡
│ 1   ┆ 4   ┆ 7   │
│ 2   ┆ 5   ┆ 8   │
│ 3   ┆ 6   ┆ 9   │
└─────┴─────┴─────┘

然而,我不确定Polar过滤掉不需要返回的列的效率如何,因为它们仍然需要从文件中读取.

Python相关问答推荐

大Pandas 胚胎中产生组合

比较两个数据帧并并排附加结果(获取性能警告)

DataFrame groupby函数从列返回数组而不是值

将数据框架与导入的Excel文件一起使用

将输入管道传输到正在运行的Python脚本中

用Python解密Java加密文件

如何设置视频语言时上传到YouTube与Python API客户端

导入...从...混乱

driver. find_element无法通过class_name找到元素'""

当递归函数的返回值未绑定到变量时,非局部变量不更新:

如何在turtle中不使用write()来绘制填充字母(例如OEG)

Pandas Data Wrangling/Dataframe Assignment

如何在Python中使用Pandas将R s Tukey s HSD表转换为相关矩阵''

Python—压缩叶 map html作为邮箱附件并通过sendgrid发送

使用__json__的 pyramid 在客户端返回意外格式

不允许 Select 北极滚动?

PySpark:如何最有效地读取不同列位置的多个CSV文件

对于标准的原始类型注释,从键入`和`从www.example.com `?

如何在Quarto中的标题页之前创建序言页

如何从具有完整层次数据的Pandas框架生成图形?