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我第一次遇到这个问题时也这么认为,但我非常喜欢它。:)