gpt4 book ai didi

python - 使用 pandas 删除数据框中的特定行

转载 作者:行者123 更新时间:2023-11-30 22:50:23 27 4
gpt4 key购买 nike

我需要大家的帮助我正在使用 Excel 中的数据表单,所以基本上现在我有这样的东西。

csr   id   ac  otc  tm  lease  maint 
1 456 b 0 0 0 0
1 543 a 0 1 1 0
1 435 e 0 0 0 0
2 123 w 1 1 1 1
2 123 g 0 0 0 0
3 987 j 0 0 0 0
4 258 k 1 1 1 1
4 258 m 0 0 0 0

所以我需要删除“otc”“tm”“lease”“maint”列中为零的行。我做了这样的事情

df = pd.read_excel(xlsx,'Sheet1')
df_zero = df[(df['OTC'] == 0) & (df['TM'] == 0) & (df['Lease'] == 0) & (df['Maint'] == 0) & (df['Support'] == 0) & (df['Other'] == 0)]

通过这种方式,我打开文件并将特定列中包含零的所有行保存在 df_zero 中。然后

df1 = df_zero.loc[:, 'CSR']

基本上,这会在 df1 中保存特定列中带有零的行的 CSR 编号,如下所示

csr
1
1
2
3
4

所以我认为可以,我这样做并解决了问题。

for n1 in df1:
df = df[df.CSR != n1]

但这里的问题是,正如您在 CSR 1 中看到的那样,我们有 3 个不同的行,如果我运行“for”,我将删除其中的 3 个,我只需要删除那些有零的行在特定列中('otc' 'tm' 'lease' 'maint')。

我认为在“for”中移动到 CSR 中,另一个移动到“otc”中,如果我发现的值为零,则移动到“tm”(在同一行中)检查零,然后'lease' 和 'maint' 在同一行,如果任何一列不为零,则跳转到下一个 CSR。在这个例子中。我们将删除 CSR 1,因为它们('otc' 'tm' 'lease' 'maint')全部为零,然后跳转到下一个 CSR,再次为 1,但在这种情况下,'otc' 中的值为零,但是'tm' 中为 1,因此我们必须跳转到下一个 CSR 再次为 1,但所有列('otc' 'tm' 'lease' 'maint')均为零,因此我们删除该行,并继续此操作直到最后一个 CSR...

我认为这可行,但我在实现它时遇到了一些问题,或者也许你们中的任何人都有更好的想法。谢谢,抱歉英语不好

最佳答案

您还可以提取您感兴趣的四列,并计算每行有多少个零,并创建用于索引的逻辑向量:

df[(df[['otc', 'tm', 'lease', 'maint']] == 0).sum(axis = 1) < 4]

# csr id ac otc tm lease maint
# 1 1 543 a 0 1 1 0
# 3 2 123 w 1 1 1 1
# 6 4 258 k 1 1 1 1

关于python - 使用 pandas 删除数据框中的特定行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39378552/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com