如何按指定列值切割Pandas DataFrame?实验数据截取报错求助
正确的DataFrame时间范围切割方法
你之前的代码df.loc[df['ElapsedTime'] == 100]只筛选了恰好等于100秒的行,而实验数据的时间大概率是连续浮点值,或者没有刚好等于100的记录,导致返回的DataFrame是空的(对应错误里的(0, 5)形状),但你绘图用的y还是原数据的全量((973088,)形状),所以出现维度不匹配的错误。
正确的做法是筛选0到100秒之间的所有数据,有两种常用方法:
方法一:布尔索引直接筛选
用小于等于100的条件过滤所有行,这是最直观的方式:
# 筛选ElapsedTime ≤ 100的所有数据 filtered_df = df.loc[df['ElapsedTime'] <= 100] # 绘图时使用过滤后的数据 import matplotlib.pyplot as plt plt.plot(filtered_df['ElapsedTime'], filtered_df['你的Y列名称']) plt.show()
方法二:基于索引切片(时间严格递增时适用)
如果你的ElapsedTime是严格递增的(实验数据通常都是),可以先找到第一个超过100秒的行索引,再切片获取前100秒数据,效率更高:
# 找到第一个ElapsedTime > 100的行索引 cutoff_idx = df['ElapsedTime'].gt(100).idxmax() # 截取从开头到该索引之前的所有行 filtered_df = df.iloc[:cutoff_idx] # 绘图示例 plt.plot(filtered_df['ElapsedTime'], filtered_df['你的Y列名称']) plt.show()
内容的提问来源于stack exchange,提问作者hi-bye125
相关产品推荐
相关产品推荐

