我有一个数据框,该数据框按类别按列组织,时间戳按行进行组织,还有一个第二数据框,每列只有一个值作为该类别的阈值。
我想将所有大于每列阈值的值过滤到一个新的数据框中。所有较低的值都应设置为0。
input:
df1:
time, category A, category B, category C, [...]
0, 1, 0, 2, […]
1, 4, 0, 5, […]
2, 6, 4, 3, […]
3, 8, 2, 2, […]
4, 3, 1, 4, […]
df2:
category A, category B, category C, [...]
2,3,3
output:
df3:
time, category A, category B, category C, [...]
0, 0, 0, 0, […]
1, 4, 0, 5, […]
2, 6, 4, 0, […]
3, 8, 0, 0, […]
4, 3, 0, 4, […]
答案 0 :(得分:1)
这是处理基础NmmPy
数组的一种方法。我最多使用了提供的示例中的category C
:
df1 = df1.set_index('time')
pd.DataFrame((df1.values > df2.values)*df1.values,
columns = df1.columns,
index=df1.index)
.reset_index()
time categoryA categoryB categoryC
0 0 0 0 0
1 1 4 0 5
2 2 6 4 0
3 3 8 0 0
4 4 3 0 4