首页 > 解决方案 > 将变量传递到数据框查询中的布尔表达式

问题描述

我有一个需要迭代的数据框,每次迭代我想选择列的值等于迭代索引的数据行,并且每次迭代我想在它产生的 binned_dataframe 上应用函数。X_bin 和 Y_bin 列填充了从 0 到 10 的整数值。

所以看起来有点像这样

i = 0
j = 0
for i in range(10):
    for j in range(10):
     
        binned_dataframe = dataframe.query('X_bin == i & Y_bin == j')

但这把我扔了

UndefinedVariableError: name 'i' is not defined

但是,当我将 i 和 j 换成这样的整数时

binned_dataframe = dataframe.query('X_bin == 5 & Y_bin == 5')

它确实有效,所以问题似乎在于在布尔值中使用了一个变量。有谁知道解决这个问题的方法或选择数据的更好方法?我需要一个循环来应用这些操作,因为实际上我有大约 1500 种不同的 X_bin、Y_bin 组合......请帮忙!

标签: pythonpandasdataframeboolean

解决方案


看起来您需要应用字符串格式来获取字符串中的ij值:

binned_dataframe = dataframe.query(f'X_bin == {i} & Y_bin == {j}')

推荐阅读