【问题标题】:How to compare a value with columns values in a pandas dataframe如何将值与熊猫数据框中的列值进行比较
【发布时间】:2018-12-14 12:16:33
【问题描述】:
        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

列的值是浮点数。

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

【问题讨论】:

  • 另一方面,如果我将 gt(1.) 更改为 eq(1.) 它会运行。我不知道为什么
  • 请在发帖前阅读此内容; How to Askminimal reproducible example。所需的输出会有所帮助

标签: pandas compare


【解决方案1】:

我不能给你确切的代码,因为你的表格不清楚,但你可以尝试使用query():-

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

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

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

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

【讨论】:

  • 表格为csv文件,有气象站(列),数据为每天降水量。我需要知道,对于每一列,降水量大于 1 的天数。
  • 我需要所有列,有 86 个。你知道一些系统在所有列中都这样做吗?
  • 我刚刚更新了我的答案,我想你可以为 86 列添加条件,它应该可以工作
  • @guilleeh 如果您发现我的回答有帮助,请标记我的回答或评价它以帮助其他遇到类似问题的人。谢谢。
  • 谢谢大家。我有两个问题。首先,我的列标签是数字,这是一个问题,我想我可以改变它。其次,我会使用它 86 次,而且效率很低。另一种方法?
【解决方案2】:

请试试这个代码:

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

【讨论】:

    【解决方案3】:

    试试这个:

    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()  
    

    【讨论】:

      猜你喜欢
      • 2021-10-27
      • 2017-10-23
      • 2019-05-20
      • 1970-01-01
      • 1970-01-01
      • 2021-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多