如何在熊猫数据框中将值与列值进行比较

时间:2018-12-14 12:16:34

标签: pandas compare

        000012  000013   000014   ...    004004  005585  007682
0          0     3.8      3.7   ...       1.1     4.8     0.4
1          0       0      0.0   ...       0.0       5     7.8
2          0       0      0.0   ...       0.0     1.6     2.1
3          0       0      2.0   ...       2.3       0     0.4
4          0       0      1.3   ...       0.2     1.3     0.1
5          0       0      0.0   ...       0.0     4.1     3.5
6          0       0      0.0   ...       0.6     0.2     0.3
7          0       0      0.0   ...       0.0       0     7.1
8          0       0      0.0   ...       0.0       0     0.0

我有这样的东西。我需要比较每列的值,以了解每列中出现多少次大于1的值。

我已经尝试过:

s.set_index(s.index).gt(1).sum(1).reset_index(name='result').fillna(s)

但出现错误: 在'>'和'numpy.ndarray'的实例之间不支持块值'int'

的情况下无法操作1

列的值是浮点数。

有人知道我能解决吗??谢谢!

3 个答案:

答案 0 :(得分:0)

我无法为您提供确切的代码,因为您的表不清楚,但是您可以尝试使用query():-

df_filtered = df.query('a > 1')

其中a是您要过滤的列的标题。

要添加多个条件,可以在每列之间使用&

df_filtered = df.query('a > 1 & b > 1')

答案 1 :(得分:0)

请尝试以下代码:

import pandas as pd
import numpy as np
datan = np.random.randn(36).reshape(9, 4)
df = pd.DataFrame(data=datan, columns=list("ABCD"))
output = {}
for c in df.columns:
output[c] = df[c][df[c] >= 1].sum()
df2 = pd.DataFrame(output, index=[0])
df2

答案 2 :(得分:0)

尝试一下:

import pandas as pd
dc={}  #The keys will identify the column name and its value differentiate how many times appears values greater than 1 .

    for i in list(dataframe.columns.values):
      dc[i] =  dataframe.loc[dataframe[i].gt(1),i].count()