布尔索引,尝试用两个条件按标签搜索,但布尔和、按位 & 和 numpy logical_and 所有 return 错误
Boolean indexing, trying to search by label with two conditions but boolean and, bitwise &, and numpy logical_and all return errors
我正在尝试 return pandas 中与我选择的标签相对应的数据框行。例如,在我的函数 Female 中,它 returns 所有患者为女性的行。对于 AgeRange,我已经 运行 解决了满足这两个条件而没有出现错误的问题。
dataset = pd.read_csv('insurance.csv')
def Female(self):
rows = dataset[dataset.sex == 1]
print(rows)
def AgeRange(self):
rows = dataset[dataset.age > 0] & dataset[dataset.age < 20]
print(rows)
使用按位运算符会出现以下错误:TypeError: unsupported operand type(s) for &: 'float' and 'bool'
def AgeRange(self):
rows = dataset[dataset.age > 0] and dataset[dataset.age < 20]
print(rows)
使用布尔值和运算符得到以下错误:ValueError:DataFrame 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。
def AgeRange(self):
rows = np.logical_and(dataset[dataset.age > 0],dataset[dataset.age < 20])
print(rows)
使用 numpy 逻辑并得到错误:ValueError:操作数无法与形状 (1309,7) (135,7) 一起广播。
老实说,我不确定这给我留下了什么,或者首先是什么导致了这个问题。谁能帮助指出我哪里出错了?
标准语法是
df[(df['a'] > X) & (df['a'] < Y)]
或使用查询():
df.query('X < a < Y')
这个语法对我来说更简单!如果你有3个不同的条件想同时满足
cond1 = df["id"] == id
cond2 = df["date"] > date_min
cond3 = df["date"] < date_max
result = df[cond1 & cond2 & cond3]
我正在尝试 return pandas 中与我选择的标签相对应的数据框行。例如,在我的函数 Female 中,它 returns 所有患者为女性的行。对于 AgeRange,我已经 运行 解决了满足这两个条件而没有出现错误的问题。
dataset = pd.read_csv('insurance.csv')
def Female(self):
rows = dataset[dataset.sex == 1]
print(rows)
def AgeRange(self):
rows = dataset[dataset.age > 0] & dataset[dataset.age < 20]
print(rows)
使用按位运算符会出现以下错误:TypeError: unsupported operand type(s) for &: 'float' and 'bool'
def AgeRange(self):
rows = dataset[dataset.age > 0] and dataset[dataset.age < 20]
print(rows)
使用布尔值和运算符得到以下错误:ValueError:DataFrame 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。
def AgeRange(self):
rows = np.logical_and(dataset[dataset.age > 0],dataset[dataset.age < 20])
print(rows)
使用 numpy 逻辑并得到错误:ValueError:操作数无法与形状 (1309,7) (135,7) 一起广播。
老实说,我不确定这给我留下了什么,或者首先是什么导致了这个问题。谁能帮助指出我哪里出错了?
标准语法是
df[(df['a'] > X) & (df['a'] < Y)]
或使用查询():
df.query('X < a < Y')
这个语法对我来说更简单!如果你有3个不同的条件想同时满足
cond1 = df["id"] == id
cond2 = df["date"] > date_min
cond3 = df["date"] < date_max
result = df[cond1 & cond2 & cond3]