【问题标题】:How to find from which row and column the value belong?如何查找值属于哪一行和哪一列?
【发布时间】:2020-08-06 11:18:09
【问题描述】:

假设我创建了以下数据框

data = {'Height_1': [4.3,6.7,5.4,6.2], 
        'Height_2': [5.1, 6.9, 5.1, 5.2], 
        'Height_3': [4.9,6.2,6.5,6.4]}

df = pd.DataFrame(data) 

假设有人来问我

  1. 找到高度为 6.9 的行和列?
  2. 找出高度为 6.2 的行数和列数?

请帮我看看这个代码是什么?

【问题讨论】:

  • 你能分享你的数据框吗?还分享样本输入和预期输出。
  • 又是什么原因这么大喊大叫?
  • 我已经编辑了我的问题以便更好地理解@MayankPorwal。请帮我看看代码是什么?
  • @ShripadKumar 请分享预期的输出和格式。
  • 输出应该像 6.9 在 (2,2) 列中。

标签: python python-3.x pandas numpy indexing


【解决方案1】:

使用布尔索引,我们可以尝试类似

>>> df[df == 6.9]

Height_1  Height_2  Height_3
0       NaN       NaN       NaN
1       NaN       6.9       NaN
2       NaN       NaN       NaN
3       NaN       NaN       NaN

但是,这不一定会为您提供您正在查找的数据的确切行和列索引。如果您想显式获取行和列,我们需要做更多的工作。

>>> bool_df = df[df == 6.9]
>>> list(bool_df.stack().index)

[(1, 'Height_2')]

至于第二个问题,我们可以使用count函数,结合我们之前使用的布尔方式。

>>> df[df == 6.2].count()

Height_1    1
Height_2    0
Height_3    1
dtype: int64

要计算行数,我们可以使用axis 参数。

>>> df[df == 6.2].count(axis=1)

0    0
1    1
2    0
3    1
dtype: int64

要获得某个值出现的简单总计数,我们可以使用 NumPy 的sum 函数。

>>> np.sum(df[df == 6.2].count())

2

【讨论】:

    猜你喜欢
    • 2012-02-14
    • 2019-11-18
    • 1970-01-01
    • 2022-09-28
    • 1970-01-01
    • 2011-11-20
    • 1970-01-01
    • 2015-07-16
    • 2013-03-25
    相关资源
    最近更新 更多