我有一个要在数据集中运行以对巨大数据进行排序的条件列表。
df = A Huge_dataframe.
例如。
Index D1 D2 D3 D5 D6
0 8 5 0 False True
1 45 35 0 True False
2 35 10 1 False True
3 40 5 2 True False
4 12 10 5 False False
5 18 15 13 False True
6 25 15 5 True False
7 35 10 11 False True
8 95 50 0 False False
我必须根据给定的顺序对df进行排序:
orders = [[A, B],[D, ~E, B], [~C, ~A], [~C, A]...]
#(where A, B, C , D, E are the conditions)
例如
A = df['D1'].le(50)
B = df['D2'].ge(5)
C = df['D3'].ne(0)
D = df['D1'].ne(False)
E = df['D1'].ne(True)
# In the real scenario, I have 64 such conditions to be run on 5 million records.
例如 我必须运行所有这些条件才能得到结果输出。
使用for loop
或map
或.apply
对其进行排序的最简单方法是完成以下任务?
df = df.loc[A & B]
df = df.loc[D & ~E & B]
df = df.loc[~C & ~A]
df = df.loc[~C & A]
结果df是我的预期输出。
如果我想运行存储在列表中的multiple conditions
,那么我对了解循环,映射或.apply有更多的兴趣。不是结果输出。
例如:
for i in orders:
df = df[all(i)] # I am not able to implement this logic for each order
答案 0 :(得分:1)
您正在寻找bitwise and
中所有的元素orders
。在这种情况下:
df = df[np.concatenate(orders).all(0)]