如果 dataframe.tail(1) 是 X,做点什么

我正在尝试检查 pandas 数据框列中的最后一个单元格是否包含 1 或 2(这些是唯一的选项)。如果是 1,我想删除整行,如果是 2,我想保留它。


import pandas as pd


df1 = pd.DataFrame({'number':[1,2,1,2,1], 'name': ['bill','mary','john','sarah','tom']})

df2 = pd.DataFrame({'number':[1,2,1,2,1,2], 'name': ['bill','mary','john','sarah','tom','sam']})

在上面的示例中,我想删除 df1 的最后一行(所以最后一行是“sarah”),但是在 df2 中,我想保持原样。


到目前为止,我曾想过尝试以下方法,但出现错误


if df1['number'].tail(1) == 1:

    df = df.drop(-1)



qq_花开花谢_0
浏览 80回答 4
4回答

白衣非少年

DataFrame.drop根据标签(索引的实际值)删除行。虽然可以做到df1.drop(df1.index[-1])这一点,但重复索引是有问题的。可以用 选择最后一行iloc,也可以用 选择单个值.iatif df1['number'].iat[-1] == 1:     df1 = df1.iloc[:-1, :]

慕容708150

您可以检查number最后一行的值是否等于一:check = df1['number'].tail(1).values == 1# Or check entire row with# check = 1 in df1.tail(1).values如果该条件成立,您可以选择除最后一行之外的所有行并分配回df1:if check:   df1 = df1.iloc[:-1, :]

慕工程0101907

if df1.tail(1).number == 1:     df1.drop(len(df1)-1, inplace = True)

慕少森

您可以使用相同的尾部功能df.drop(df.tail(n).index,inplace=True) # drop last n rows
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python