如何将数据框中的列与熊猫中第二个数据框中具有相同名称/位置的列中的值进行比较?

时间:2019-06-17 12:38:55

标签: python pandas

我有一个数据框,该数据框按类别按列组织,时间戳按行进行组织,还有一个第二数据框,每列只有一个值作为该类别的阈值。

我想将所有大于每列阈值的值过滤到一个新的数据框中。所有较低的值都应设置为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, […]

1 个答案:

答案 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
相关问题