Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 具有嵌套for循环条件的Python切片_Python 3.x_Pandas_Slice - Fatal编程技术网

Python 3.x 具有嵌套for循环条件的Python切片

Python 3.x 具有嵌套for循环条件的Python切片,python-3.x,pandas,slice,Python 3.x,Pandas,Slice,我有这样一个数据帧: df = pd.DataFrame({'A':[1,2,3], 'B':[4,5,6],'C':[7,8,9],'D':[10,11,12]}) x = [1,4] x = [2,5,8] 还有一个列表,这里是x,其长度可能如下所示: df = pd.DataFrame({'A':[1,2,3], 'B':[4,5,6],'C':[7,8,9],'D':[10,11,12]}) x = [1,4] x = [2,5,8] 我想根据x中的值对df进行切片,如下所示 i

我有这样一个数据帧:

df = pd.DataFrame({'A':[1,2,3], 'B':[4,5,6],'C':[7,8,9],'D':[10,11,12]})
x = [1,4]
x = [2,5,8]
还有一个列表,这里是x,其长度可能如下所示:

df = pd.DataFrame({'A':[1,2,3], 'B':[4,5,6],'C':[7,8,9],'D':[10,11,12]})
x = [1,4]
x = [2,5,8]
我想根据x中的值对df进行切片,如下所示

if len(x) == 1:
   df[df['A'] == x[0]]
elif len(x) == 2:
   df[(df['A'] == x[0]) & (df['B'] == x[1])]
elif len(x) == 3:
   df[(df['A'] == x[0]) & (df['B'] == x[1]) & (df['C'] == x[2])]
您知道下面这样的嵌套for循环的更好的解决方案吗

df[(df.iloc[:,i] == x[i]) for i in range(len(x))]
谢谢大家

试试看:

def list_slice(df,x): 
    return df[df.iloc[:, :len(x)].eq(x).all(1)]

list_slice(df, [1,4])
#    A  B  C   D
# 0  1  4  7  10

list_slice(df, [2,5,8])
#    A  B  C   D
# 1  2  5  8  11
尝试: