Python中存在数据却返回Empty DataFrame的问题排查与解决
问题排查与解决方法
可能的原因及对应解决办法
1. 数据类型不匹配
你的recipe_id列可能是数值类型(int/float),但你用了字符串'85009'进行匹配,类型不一致导致所有比较结果为False,返回空DataFrame。
- 先检查数据类型:执行
print(df['recipe_id'].dtype)查看类型 - 解决:
- 如果是数值型,去掉引号直接用数值匹配:
df_new = df[df['recipe_id'] == 85009] - 或者统一转为字符串类型后匹配:
df['recipe_id'] = df['recipe_id'].astype(str) df_new = df[df['recipe_id'] == '85009']
- 如果是数值型,去掉引号直接用数值匹配:
2. 存在隐藏空格或特殊字符
recipe_id的实际值可能包含前后空格(比如' 85009'或'85009 ')、不可见特殊字符,导致和纯字符串'85009'无法匹配。
- 解决:先清理列数据,去除前后空格(仅适用于字符串类型):
df['recipe_id'] = df['recipe_id'].str.strip() df_new = df[df['recipe_id'] == '85009'] - 也可以先验证是否存在包含目标数字的行:
df[df['recipe_id'].str.contains('85009', na=False)],确认后再针对性清理字符。
3. 格式差异(如浮点数转字符串)
如果recipe_id是浮点数类型,转成字符串后可能变成'85009.0',和'85009'不匹配。
- 解决:先转为整数再转字符串:
df['recipe_id'] = df['recipe_id'].astype(int).astype(str) df_new = df[df['recipe_id'] == '85009']
内容的提问来源于stack exchange,提问作者Tharindu Marapana
相关产品推荐
相关产品推荐

