Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.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 如何按动态列值选择行_Python_Pandas - Fatal编程技术网

Python 如何按动态列值选择行

Python 如何按动态列值选择行,python,pandas,Python,Pandas,我需要通过动态列值从DataFrame中选择行,但我不知道应该如何编写代码来动态生成条件,请提供帮助,例如: 我不知道如何生成动力学条件 df = data[(self.data[col1]==1) | (self.data[col2]==2)] 如果我知道有2个列,这是可以的,但问题是实际列是动态确定的。我应该如何使用。。。在里面要生成像self.data[col1]==1 | self.data[col2]==2 |这样的适当条件,这是np.logical_或.reduce,因为您有一个

我需要通过动态列值从DataFrame中选择行,但我不知道应该如何编写代码来动态生成条件,请提供帮助,例如:

我不知道如何生成动力学条件

df = data[(self.data[col1]==1) |  (self.data[col2]==2)]
如果我知道有2个列,这是可以的,但问题是实际列是动态确定的。我应该如何使用。。。在里面要生成像self.data[col1]==1 | self.data[col2]==2 |

这样的适当条件,这是np.logical_或.reduce,因为您有一个可以迭代的字典,条件是|:

样本数据 代码: 输出df1:

如果需要对同一列进行多次检查,请将列表视为值:d={‘a’:[1,3],'b':[3 ] },而应检查df[k]。无论名称如何,列都位于相同的索引位置?列数将在代码运行时确定,列是字典列表,列名是dict键,列值是dict值是条件始终|?

import numpy as np
import pandas as pd

np.random.seed(1)
df = pd.DataFrame(np.random.randint(1,10, (100, 10)), columns=list('abcdefghij'))
d = {'a': 1, 'b': 3, 'h': 8, 'f': 4}
mask = np.logical_or.reduce([df[k] == v for k,v in d.items()])
df1 = df.loc[mask]
    a  b  c  d  e  f  g  h  i  j
1   6  3  5  3  5  8  8  2  8  1
3   8  4  7  6  2  4  5  9  2  5
4   1  4  3  1  5  3  8  8  9  7
5   4  8  8  5  6  4  7  9  1  3
6   8  8  8  4  1  9  8  8  2  2
12  2  3  2  6  5  1  8  9  6  8
13  1  4  2  5  5  7  9  9  3  8
22  7  8  1  4  1  4  5  8  6  4
...