我有一个 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/