假设我创建了下面的数据框架
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)
假设有人来问我
- 找出高度6.9的行和列 ?
- 找出高度为6.2的行和列有多少行和列?
请帮助我将是什么代码?
解决方案:
使用布林索引,我们可以尝试像这样的方法。
>>> 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