首页 > 解决方案 > 打印特定月份数据帧的最后 10 行,不包括最后一行

问题描述

我想打印 2007 年 2 月数据框的最后 10 行,但不考虑最后一行。

数据框包含日期作为索引,其中包含数列包括数值。

到目前为止,我已经尝试过这种方法:

df['2007-02'].iloc[:-1,:].last('10D')

是否有另一种打印方式但忽略最后一行?而不是删除它。此外,通过使用这种方法,我得到了一个未来警告,我可能会使用其他不会很快被弃用的技​​术吗?

标签: pandasdataframenumpy

解决方案


你的 FutureWarning 被提出是因为你不使用locfor df['2007-02']

您可以获得最后 11 行并排除最后一行:

>>> df.loc['2007-02'].last('11D')[:-1]
# OR
>>> df.loc['2007-02'][:-1].last('10D') 

            A   B  C
2007-02-18  2   1  1
2007-02-19  6  10  7
2007-02-20  4   8  2
2007-02-21  2   3  3
2007-02-22  5   5  1
2007-02-23  7   2  5
2007-02-24  6   1  3
2007-02-25  5   5  6
2007-02-26  5   8  7
2007-02-27  5   8  7

设置

dti = pd.date_range('2007-02-10', '2007-03-10', freq='D')
df = pd.DataFrame(np.random.randint(1, 10, (len(dti), 3)),
                  index=dti, columns=list('ABC'))
print(df)

# Output:
            A   B  C
2007-02-10  4   5  6
2007-02-11  2   7  5
2007-02-12  1   2  2
2007-02-13  4   6  1
2007-02-14  6   2  6
2007-02-15  8   4  4
2007-02-16  1   7  7
2007-02-17  3   8  5
2007-02-18  2   1  1
2007-02-19  6  10  7
2007-02-20  4   8  2
2007-02-21  2   3  3
2007-02-22  5   5  1
2007-02-23  7   2  5
2007-02-24  6   1  3
2007-02-25  5   5  6
2007-02-26  5   8  7
2007-02-27  5   8  7
2007-02-28  2   6  4
2007-03-01  7   4  7
2007-03-02  4   1  6
2007-03-03  2   1  5
2007-03-04  4   8  6
2007-03-05  7   6  6
2007-03-06  3   2  1
2007-03-07  2   3  6
2007-03-08  7   7  3
2007-03-09  5   6  8
2007-03-10  3   4  7

推荐阅读