python - 如何逐个创建 DataFrame 切片对象?

标签 python pandas

我有一个 DataFrame,我想从中选择特定的行和列。我知道如何使用 loc 来做到这一点。但是,我希望能够单独指定每个条件,而不是一次性指定。

import numpy as np
import pandas as pd
idx = pd.IndexSlice

index = [np.array(['foo', 'foo', 'qux', 'qux']),
         np.array(['a', 'b', 'a', 'b'])]
columns = ["A",  "B"]
df = pd.DataFrame(np.random.randn(4, 2), index=index, columns=columns)
print df
print df.loc[idx['foo', :], idx['A':'B']]

              A         B
foo a  0.676649 -1.638399
    b -0.417915  0.587260
qux a  0.294555 -0.573041
    b  1.592056  0.237868


              A         B
foo a -0.470195 -0.455713
    b  1.750171 -0.409216

要求

我希望能够使用类似于以下代码的代码实现相同的结果,我在其中一一指定了每个条件。同样重要的是,我能够使用 slice_list 来允许动态行为 [即无论 slice_list 中有两个、三个还是十个不同的条件,语法都应该有效。

slice_1 = 'foo'
slice_2 = ':'
slice_list = [slice_1, slice_2]

column_slice = "'A':'B'"
print df.loc[idx[slice_list], idx[column_slice]]

最佳答案

您可以使用 slice 内置函数来实现这一点。您不能使用字符串构建切片,因为“:”是文字字符而不是语法字符。

slice_1 = 'foo'
slice_2 = slice(None)
column_slice = slice('A', 'B')
df.loc[idx[slice_1, slice_2], idx[column_slice]]

关于python - 如何逐个创建 DataFrame 切片对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42981827/

相关文章:

python - Pandas 无法读取 csv 文件,它将全部替换为 NaN

python - Pandas:使用多个字符串条件过滤行

python - 如何将每一行对与前一列相关联?

python - Cassandra ResultSet 遍历一次后就变空了

python - Scipy 多元正常 : How to draw deterministic samples?

python pandas 创建数据框并强制使用多种列类型

Python SQL 查询字符串格式化

python - 如何使用 pandas 在 python 中插入将另外 2 个列的数据连接在一起的列

python - 没有名为 'numpy' : Visual Studio Code 的模块

python - Cythonise 一个 pandas 循环