使用熊猫进行动态数据选择

时间:2019-02-01 08:22:12

标签: python python-3.x pandas numpy

我有一个动态的情况,我想按照波纹管逻辑过滤数据。

dynamic_cols = ['A', 'B'. ...]
dynamic_values = [1,2,...]

data_frame.LOC[data_frame[dynamic_cols == dynamic_values ]]

我用过熊猫和numpy。

对此有任何建议吗?

例如:在以上情况下,我想过滤A=1 and Column B=2

中的行

1 个答案:

答案 0 :(得分:2)

list comprehension创建的所有掩码中使用np.logical_and + reduce或创建助手DataFramemerge

df = pd.DataFrame({
         'A':[1,2,4,1,5,4],
         'B':[2,8,9,2,2,3],
         'C':[3,3,5,3,1,0],

})

print (df)
   A  B  C
0  1  2  3
1  2  8  3
2  4  9  5
3  1  2  3
4  5  2  1
5  4  3  0

dynamic_cols = ['A','B','C']
dynamic_values = [1, 2, 3]

m = np.logical_and.reduce([df[a] == b for a, b in (zip(dynamic_cols, dynamic_values))])
df1 = df[m]
print (df1)
   A  B  C
0  1  2  3
3  1  2  3
df2 = pd.DataFrame([dynamic_values], columns=dynamic_cols)
df1 = df.merge(df2)
print (df1)
   A  B  C
0  1  2  3
3  1  2  3