python - 是否可以从 pandas 数据框中为列的子集选择视图而不进行切片?
问题描述
我正在使用接近可用内存的相当大的数据集。我想根据列名选择列的子集,然后保存此数据。我认为我不能像:2
符号那样使用常规切片,所以我需要根据标签或位置进行选择。但似乎这样做的唯一方法是生成一个副本,每当我想保存数据的子集时,内存使用量就会大大增加。是否可以在不使用切片的情况下选择视图?或者是否有一些创造性的方式来使用可以让我选择任意位置的列的切片?
考虑以下:
import pandas as pd
df = pd.DataFrame([[1, 2, 1], [3, 4, 1]], columns=list('abc'))
# you can get a view using :2 slicing
my_slice = df.iloc[:, :2]
my_slice.iloc[0, 0] = 100
df
a b c
0 100 2 1
1 3 4 1
my_slice
a b
0 100 2
1 3 4
这会返回一个视图,因此不会复制,但我通过切片获得了索引。
现在我尝试替代方案。
my_slice = df.iloc[:, [0, 1]]
my_slice.iloc[0, 0] = 99
my_slice
a b
0 99 2
1 3 4
df
a b c
0 100 2 1
1 3 4 1
或者
my_slice = df.loc[:, ['a', 'b']]
my_slice.iloc[0, 0] = 55
my_slice
a b
0 55 2
1 3 4
df
a b c
0 100 2 1
1 3 4 1
因此,最后两次尝试返回了一个副本。同样,这只是一个简单的例子。实际上,我有更多的列,并且我想要保存的列子集的位置可能不适合切片。这篇文章是相关的,因为它讨论了从数据框中选择列,但它并不关注能够选择视图。
解决方案
推荐阅读
- jquery - jquery-selective隐藏条件上的删除图标
- apache-kafka - Couchbase kafka 源连接器消息顺序
- python - 修复将二进制数据写入文件的问题:“文件不是 UTF-8 编码的”
- php - PHP:以浮点数计算完整年龄
- docusignapi - 需要有关 DocuSign 电子签名网址的帮助?
- reactjs - 在没有消费者的情况下使用 contexProvider 会被认为是不好的做法吗
- javascript - 如何从 Node.js 中的回调函数中获取返回值?
- php - 类 google.cloud.speech.v1.LongRunningRecognizeMetadata 尚未添加到描述符池
- bash - Bash 脚本将单个文件从一个 S3 存储桶复制 100 次到另一个并行
- java - 使用 IBM Java 显示西里尔字符串的问题