熊猫计算其特殊阈值的每一列

时间:2019-10-17 08:50:06

标签: python pandas dataframe

如果我具有以下数据框:

          A       B       C       D       E

1         1       2       0       1       0
2         0       0       0       1      -1
3         1       1       3      -5       2
4        -3       4       2       6       0
5         2       4       1       9      -1
T         1       2       2       4       1

最后一行是我每一列的阈值。我想计算是否在python pandas中降低或降低阈值。

所需的输出为;

         A       B       C       D       E
Count    2       2       3       3       4

但是,我需要用一个通用的解决方案来解决这个问题,而不是针对这些特定的列。因为我有一个很大的数据集。我无法在代码中为其指定列名。

您能帮我吗?

1 个答案:

答案 0 :(得分:4)

首先选择没有索引的所有行,然后按DataFrame.lt与最后一行进行比较,然后sum并将Series转换为DataFrame并由Series.to_frame转换为一行由DataFrame.T转置:

df = df.iloc[:-1].lt(df.iloc[-1]).sum().to_frame('count').T
print (df)
       A  B  C  D  E
count  2  2  3  3  4

带有DataFrame构造函数的Numpy替代项:

arr = df.values
df = pd.DataFrame([np.sum(arr[:-1] < arr[-1], axis=0)], columns=df.columns, index=['count'])
print (df)
       A  B  C  D  E
count  2  2  3  3  4