У меня есть 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]]