Python 从字符串中选择条件以选择数据帧行

Python 从字符串中选择条件以选择数据帧行,python,pandas,Python,Pandas,我有这样一个数据帧: data = [[1, 0, 1], [1, 1, 1], [0, 0, 1]] df = pd.DataFrame(data=data, columns=['col1', 'col2', 'col3']) cond_str = ['col1 >= 1', 'col3 >= 1'] 从这样的字符串: data = [[1, 0, 1], [1, 1, 1], [0, 0, 1]] df =

我有这样一个数据帧:

data = [[1, 0, 1],
        [1, 1, 1],
        [0, 0, 1]]

df = pd.DataFrame(data=data, columns=['col1', 'col2', 'col3'])
cond_str = ['col1 >= 1', 'col3 >= 1']
从这样的字符串:

data = [[1, 0, 1],
        [1, 1, 1],
        [0, 0, 1]]

df = pd.DataFrame(data=data, columns=['col1', 'col2', 'col3'])
cond_str = ['col1 >= 1', 'col3 >= 1']
我希望做到这一点:

df.loc[(df['col1'] >= 1) & (df['col3'] >= 1)]
有什么简单的方法可以做到这一点,或者我必须为此编写自己的解析函数吗?

您可以使用:

df.query(“&.join(cond_str))
导致

col1 col2 col3
0     1     0     1
1     1     1     1

您可以使用python的
eval
对字符串表达式求值。e、 g.为了你的案子

df = pd.DataFrame(data=data, columns=['col1', 'col2', 'col3'])
print(df)

    col1  col2  col3
0     1     0     1
1     1     1     1
2     0     0     1

cond_str_list = ['col1 >= 1', 'col3 >= 1']

cond_str = ' & '.join(['(df.'+i+')' for i in  cond_str_list])

print(cond_str)

df = df[eval(cond_str)]

print(df)

    col1  col2  col3
0     1     0     1
1     1     1     1

你想在
df.loc[(df['col1']>=1)和(df['col3']>=1)]
中划分你的
cond\u str
列表并进行一些修改吗?是的,我想使用字符串作为实际条件!出于某种原因,我假设位运算符不能用于eval或query,直到它们可以:)@yatu我第一次遇到这个问题时也这么认为,但我非常喜欢它。:)