Pandas None 值与空数据框
Pandas None values vs Empty dataframe
我有两个不同结果的查询,因为 pandas 数据框中没有数据。
第一次查询:
with self.connection as conn:
query = f"""SELECT current_client_name, client_phone_number, profile, effective_date, effective_time,
client_details.telegram_id, telegram_reference
FROM `clients` JOIN `client_details`
ON clients.telegram_id=client_details.telegram_id
WHERE `status` = \'{status}\' order by effective_date"""
df_result = pd.read_sql_query(query, conn)
return df_result
在没有找到记录的结果中,我看到了空数据框:
Empty DataFrame
Columns: [current_client_name, client_phone_number, profile, effective_date, effective_time, telegram_id, telegram_reference]
Index: []
并且可以在下一个条件下捕获空数据帧:
if df.empty is True:
第二次查询
with self.connection as conn:
query = f"SELECT MAX(effective_date), effective_time FROM `client_details` WHERE `telegram_id` = {telegram_id} " \
f"and (`status` = \'WAIT\' or `status`= \'APPROVED\')"
df_result = pd.read_sql_query(query, conn)
return df_result
这个查询出于某些原因 return 我不是空数据框,而是列中有 None 的数据框
df MAX(effective_date) effective_time
0 None None
此结果无法用下一个代码处理,因为某些原因 returned is not empty dataframe!
if df.empty is True:
有人知道为什么会这样吗:为什么 return 在某些情况下是空数据框,为什么 return 数据框在列中输入 None?如何避免或处理这种情况?
谢谢
在第一种情况下,您的查询没有 return 任何结果,因此您的 df 中没有任何条目。
在第二种情况下,您的查询 return 是一个结果,但是这些字段在您的 SQL 数据库中是空的,因此您有一个非空的 DataFrame,其中包含 None 个值.
取决于您是否只需要包含所有非空值的行(例如,示例中的两列都必须为非空),或者某些空值是否可以(例如,其中一列为 Null,而另一列非空),您可以删除包含这些 None 值的行:
删除包含任何 None 值的行:
df = df.dropna(how = 'any')
要删除仅包含 None 个值的行:
df = df.dropna(how = 'all')
那么检查 if df.empty
应该是正确的。
我有两个不同结果的查询,因为 pandas 数据框中没有数据。
第一次查询:
with self.connection as conn:
query = f"""SELECT current_client_name, client_phone_number, profile, effective_date, effective_time,
client_details.telegram_id, telegram_reference
FROM `clients` JOIN `client_details`
ON clients.telegram_id=client_details.telegram_id
WHERE `status` = \'{status}\' order by effective_date"""
df_result = pd.read_sql_query(query, conn)
return df_result
在没有找到记录的结果中,我看到了空数据框:
Empty DataFrame
Columns: [current_client_name, client_phone_number, profile, effective_date, effective_time, telegram_id, telegram_reference]
Index: []
并且可以在下一个条件下捕获空数据帧:
if df.empty is True:
第二次查询
with self.connection as conn:
query = f"SELECT MAX(effective_date), effective_time FROM `client_details` WHERE `telegram_id` = {telegram_id} " \
f"and (`status` = \'WAIT\' or `status`= \'APPROVED\')"
df_result = pd.read_sql_query(query, conn)
return df_result
这个查询出于某些原因 return 我不是空数据框,而是列中有 None 的数据框
df MAX(effective_date) effective_time
0 None None
此结果无法用下一个代码处理,因为某些原因 returned is not empty dataframe!
if df.empty is True:
有人知道为什么会这样吗:为什么 return 在某些情况下是空数据框,为什么 return 数据框在列中输入 None?如何避免或处理这种情况?
谢谢
在第一种情况下,您的查询没有 return 任何结果,因此您的 df 中没有任何条目。
在第二种情况下,您的查询 return 是一个结果,但是这些字段在您的 SQL 数据库中是空的,因此您有一个非空的 DataFrame,其中包含 None 个值.
取决于您是否只需要包含所有非空值的行(例如,示例中的两列都必须为非空),或者某些空值是否可以(例如,其中一列为 Null,而另一列非空),您可以删除包含这些 None 值的行:
删除包含任何 None 值的行:
df = df.dropna(how = 'any')
要删除仅包含 None 个值的行:
df = df.dropna(how = 'all')
那么检查 if df.empty
应该是正确的。