为何Python/Pandas明知数据存在却“丢失”数千行数据?
解决方案
1. 排查DataFrame是否真的被截断
先确认DataFrame的实际行数是否完整,别被显示误导:
- 执行
print(len(df))和print(df.iloc[541:545]),看能不能取出第542行及以后的数据。如果能取到,说明是显示问题;如果报错,说明DataFrame确实被截断了,得回溯数据处理步骤,检查是否有隐式过滤(比如布尔索引、错误的赋值操作)。
2. 确保Pandas显示配置生效
在查看DataFrame的单元格前,单独执行以下代码,避免配置被覆盖:
import pandas as pd # 放开所有行、列的显示限制 pd.set_option('display.max_rows', None) pd.set_option('display.max_columns', None) pd.set_option('display.width', None) pd.set_option('display.max_colwidth', None)
之后用 print(df) 代替直接输出df(Jupyter直接显示可能受前端渲染限制,print会强制输出全部内容)。
3. 强制输出完整数据
如果前端还是折叠,用to_string()方法强制转换为完整字符串:
print(df.to_string())
或者查看末尾行确认数据存在:
print(df.tail(20)) # 输出最后20行
4. 检查数据处理流程
如果确认DataFrame被截断,回溯之前的操作:
- 检查删除列的代码,比如
df.drop(columns=['列1', '列2'])是否误写成了删除行(比如没加columns=参数); - 检查API数据加载后的处理步骤,是否有过滤、切片操作(比如
df = df[:541])没注意到; - 重新从CSV加载数据,执行
df = pd.read_csv('你的文件.csv'),再查看行数和显示情况,对比API获取的DataFrame,定位问题环节。
5. 重置索引避免显示异常
如果是索引不连续导致的显示折叠,重置索引后再查看:
df = df.reset_index(drop=True)
内容的提问来源于stack exchange,提问作者TheHydra688
相关产品推荐
相关产品推荐

