我正在尝试检查 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, :]
慕容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, :]
添加回答
举报
0/150
提交
取消