Python支持删除空列/行的大数据帧

2024-06-07 00:46:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个巨大的数据帧问题。我需要清理它,但只清理行,从-1到2,金额和账单为零(见图) 也许可以连接行,然后删除它,但我不知道怎么做

enter image description here

谢谢你,汉娜


Tags: 数据金额账单
2条回答

尝试选择行的索引并应用drop方法

temp_df = df[(df.Delivery > -2) & (df.Delivery < 3) & (df.Bill == 0)]
index_lst = temp_df.index.values.tolist()
df = df.drop(index_lst)

如果希望排除交付介于-12之间且数量0的所有数据,您可以过滤数据帧:

简短回答

df = df[df["Delivery"].isin(range(-1,3)) & (df["Amount"] == 0)]

长话短说

创建数据帧示例

import pandas as pd

df = pd.DataFrame({"Delivery": [-1, 0, 1, 2, -1, 0, 1, 2], "Amount": [2500, 2500, 2500, 3500, 0, 0, 0, 0]})
   Delivery  Amount
0        -1    2500
1         0    2500
2         1    2500
3         2    3500
4        -1       0
5         0       0
6         1       0
7         2       0

什么是过滤器?

筛选器是一个系列,它包含数据帧或系列中每一行的值TrueFalse

例如,为我们提供示例中给出的数据帧的第一行第二行最后一行的过滤器如下所示:

f = pd.Series([True, True, False, False, False, False, False, True])

df = df[f]
   Delivery  Amount
0        -1    2500
1         0    2500
7         2       0

第一个过滤器:交付介于-12

f1 = df["Delivery"].isin(range(-1, 3))
0    True
1    True
2    True
3    True
4    True
5    True
6    True
7    True

第二个过滤器:数量0

f2 = (df["Amount"] == 0)
0    False
1    False
2    False
3    False
4     True
5     True
6     True
7     True

连接两个过滤器
f = f1 & f2
0    False
1    False
2    False
3    False
4     True
5     True
6     True
7     True

最后,应用过滤器

df = df[f]
   Delivery  Amount
4        -1       0
5         0       0
6         1       0
7         2       0

相关问题 更多 >