繁体   English   中英

Pandas dataframe.drop 随机丢弃行

[英]Pandas dataframe.drop randomly dropping rows

我试图根据一系列条件从 Pandas 数据框中删除不需要的行。 我对每组条件都有一个 drop 语句 - 总共 10 个条件。 但是,行会被随机丢弃。 每次我在不应删除任何行的测试用例上运行代码时,都会删除不同数量的行。 我尝试使用 inplace=True 删除,但仍然随机删除行。 我尝试注释掉除第一个之外的所有 drop 语句 - 仅使用一个 drop 语句仍然会导致随机删除行。

当我在 PC 上本地运行这段代码时,它似乎运行良好。 但是,我需要在服务器上运行它。 服务器有更新版本的 Python 和 Pandas。 我尝试在服务器上使用与我在 PC 上使用的相同版本的 Python 和 Pandas,但我仍然得到随机丢弃的行。

我究竟做错了什么? 我很困惑。

这是示例代码 - 两种方法都会导致随机删除行:

df = df.drop(df[df['Pen ID'].str.len() <= 5].index)
df = df.drop(df[df['Operator ID'] == 'VC'].index)
df = df.drop(df[df['Test'] == 'Test1'].index)

df.drop(df[df['Pen ID'].str.len() <= 5].index, inplace=True)
df.drop(df[df['Operator ID'] == 'VC'].index, inplace=True)
df.drop(df[df['Test'] == 'Test1'].index, inplace=True)

我强烈建议您不要使用drop()函数,而是将数据帧切片以避免多次调用。

代替:

df = df.drop(df[df['Pen ID'].str.len() <= 5].index)
df = df.drop(df[df['Operator ID'] == 'VC'].index)
df = df.drop(df[df['Test'] == 'Test1'].index)

和:

df = df[(df['Pen ID'].str.len() > 5) & (df['Operator ID'] != 'VC') & (df['Test'] != 'Test1')]

这将保留Pen ID值的长度大于 5 的所有行(所有值 <= 5 都将被删除),并且Operator ID不是 VC(所有Operator ID == VC都将被删除)和Test不是Test1

因此,所有满足至少一个删除条件的行都将被删除

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM