我正在尝试解决为什么会发生这种情况。我正在尝试浏览我的数据框,同时跳过不完整的数据。在我的数据框中,“收入中位数”列在相应的行中要么具有数值,要么具有“未知”或“不可用”。即使第一个条件不一定得到满足(提供了数字点),我的程序也将始终跳过该行。有谁知道为什么会发生这种情况?预先感谢
another_list = []
df = pd.read_excel('C:/Users/Miles/PycharmProjects/pythonProject1/Reservation Data.xlsx')
for all_entries in range(len(df['Median Income'])):
variable = df.at[all_entries, 'Median Income']
if variable == "Unknown" or 'Unavailable':
print(f'Passed {variable}')
pass
else:
print('condition')
another_list.append([df.at[all_entries, 'Native American Population'],df.at[all_entries, 'Median Income']])
print(another_list)
就像其他人所说的那样,你有错误的
if
逻辑。
if variable == "Unknown" or "Unavailable":
这等于:
if (variable == "Unknown") or ("Unavailable"):
当在 if 中使用
"Unavailable"
时,其真值始终计算为 True
,因此条件毫无意义。
正确的当然是,就像提到的那样:
if variable == "Unknown" or variable == "Unavailable":
...
或
if variable in ["Unknown", "Unavailable"]:
然而,你正在以一种超级复杂的方式来做这件事。
让我们采用这样一个虚构的数据框:
df = pd.DataFrame(
{
"Median Income": [10, 20, "Unknown", "Unavailable", 30],
"Native American Population": [5, 10, 2, 4, 10]
}
)
要过滤掉
"Unknown"
和 "Unavailable"
,您可以执行以下操作:
filtered_df = df[~df["Median Income"].isin(["Unknown", "Unavailable"])]
或者换句话说:从
df
中,取出所有行 ([]
),其中 ~
不是 ("Median income"
) 为 "Unknown"
或 "Unavailable"
。