首页 > 解决方案 > 如何改进删除熊猫行的代码

问题描述

我从 test.csv 开始,其中包含:

Name,Date,Weight
Jonny,03-08-2019,100
Sally,03-08-2019,120
Bobby,03-08-2019,200

使用df = pd.read_csv('test.csv', index_col=None, header='infer')我将 test.csv 加载到 DataFrame 中,它产生:

    Name        Date  Weight
0  Jonny  03-08-2019     100
1  Sally  03-08-2019     120
2  Bobby  03-08-2019     200

然后我创建了一个函数来删除用户选择的行。但我通过在所选行拆分 DataFrame 然后将 2 个 DataFrame 重新附加在一起来做到这一点。有没有更简单的方法来做到这一点?我查看了 df.drop() 但无法删除整行。

def delete_entry(df):
    num_to_delete = int(input("Delete which row? "))

    first_rows_to_keep = df.iloc[:num_to_delete]
    last_rows_to_keep = df.iloc[num_to_delete+1:]
    new_df = first_rows_to_keep.append(last_rows_to_keep)
    with open('test.csv', 'w') as f:
        new_df.to_csv(f, index=False)

寻找改进我的代码的方法。谢谢!

标签: python-3.xpandascsv

解决方案


您可以使用.drop()pandas df 的方法,使用适当的参数将指定的行放置到位。

例如,要删除给定的行:

df.drop(num_to_delete, axis=0, inplace=True)

其中第二个参数('axis')表示删除行(与列相反),最后一个参数指定要执行的操作。

你也可以考虑看看.set_index方法。例如,这将使您能够根据给定列的值删除行(即删除名称为 Bobby 的每个人)。


推荐阅读