为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

qq_花开花谢_0 2022-07-12 09:43:40
我正在尝试检查 pandas 数据框列中的最后一个单元格是否包含 1 或 2(这些是唯一的选项)。如果是 1,我想删除整行,如果是 2,我想保留它。import pandas as pddf1 = 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)
查看完整描述

4 回答

?
白衣非少年

TA贡献1155条经验 获得超0个赞

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

if df1['number'].iat[-1] == 1:
    df1 = df1.iloc[:-1, :]


查看完整回答
反对 回复 2022-07-12
?
慕容708150

TA贡献1831条经验 获得超4个赞

您可以检查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, :]


查看完整回答
反对 回复 2022-07-12
?
慕工程0101907

TA贡献1887条经验 获得超5个赞

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


查看完整回答
反对 回复 2022-07-12
?
慕少森

TA贡献2019条经验 获得超9个赞

您可以使用相同的尾部功能

df.drop(df.tail(n).index,inplace=True) # drop last n rows


查看完整回答
反对 回复 2022-07-12
  • 4 回答
  • 0 关注
  • 79 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信