当前位置: 首页 > 面试题库 >

在Pandas数据框中查找唯一值,而不考虑行或列的位置

元俊雅
2023-03-14
问题内容

我有一个Pandas数据框,我想在该数据框中找到所有唯一的值…与行/列无关。如果我有一个10 x
10的数据框,并假设它们具有84个唯一值,则需要找到它们-而不是计数。

我可以创建一个集合并通过遍历数据框的行来添加每行的值。但是,我觉得它可能效率很低(无法证明这一点)。有没有找到它的有效方法?有预定义的功能吗?


问题答案:
In [1]: df = DataFrame(np.random.randint(0,10,size=100).reshape(10,10))

In [2]: df
Out[2]: 
   0  1  2  3  4  5  6  7  8  9
0  2  2  3  2  6  1  9  9  3  3
1  1  2  5  8  5  2  5  0  6  3
2  0  7  0  7  5  5  9  1  0  3
3  5  3  2  3  7  6  8  3  8  4
4  8  0  2  2  3  9  7  1  2  7
5  3  2  8  5  6  4  3  7  0  8
6  4  2  6  5  3  3  4  5  3  2
7  7  6  0  6  6  7  1  7  5  1
8  7  4  3  1  0  6  9  7  7  3
9  5  3  4  5  2  0  8  6  4  7

In [13]: Series(df.values.ravel()).unique()
Out[13]: array([9, 1, 4, 6, 0, 7, 5, 8, 3, 2])

小块独特的排序,因此以这种方式更快地进行排序(然后根据需要排序)

In [14]: df = DataFrame(np.random.randint(0,10,size=10000).reshape(100,100))

In [15]: %timeit Series(df.values.ravel()).unique()
10000 loops, best of 3: 137 ᄉs per loop

In [16]: %timeit np.unique(df.values.ravel())
1000 loops, best of 3: 270 ᄉs per loop


 类似资料:
  • 我想知道是否有一种简洁而准确的方法来提取十进制值中的小数点位数(以int形式),这样在不同的区域性信息中使用是安全的? 例如: 19.0应返回1, 27.5999应返回4, 19.12应返回2, 等。 但我想到,这只适用于使用“.”的区域。作为小数分隔符,因此在不同系统中非常脆弱。

  • 问题内容: 如果我有这样的表: 我可以在Qlik中提出5个唯一的hID。我该如何在Python中使用Pandas数据框?还是一个numpy数组?同样,如果这样做,我将在Qlik中得到8。在大熊猫中做这件事的等效方法是什么? 问题答案: 计算不同的值,使用: 仅计算非空值,请使用: 计算包括空值在内的总值,请使用属性: 使用布尔索引: 或使用: 输出:

  • 本文向大家介绍如何在R数据帧的列中查找唯一值?,包括了如何在R数据帧的列中查找唯一值?的使用技巧和注意事项,需要的朋友参考一下 分类变量具有多个类别,但是如果数据集很大且类别也很大,那么识别它们就会有些困难。因此,我们可以为分类变量提取唯一值,这将有助于我们轻松识别分类变量的类别。我们可以通过对R数据帧的每一列使用唯一的方法来做到这一点。 示例 请看以下数据帧- 在列x1中找到唯一值- 在列x2中

  • 问题内容: 我想获取一列中字符串的频率计数。一方面,这类似于将数据框折叠为仅反映列中的字符串的一组行。我能够通过循环解决此问题,但知道有更好的解决方案。 df示例: 并想出去: 我搜索了很多论坛,但找不到合适的答案。 我假设使用pivot_table方法是正确的方法,但是无法获取正确的参数来折叠没有为输出df提供明显索引的表。 我可以通过使用value_counts()遍历每列并将每个值计数系列附

  • 问题内容: 我有两个熊猫数据框,一个叫做“ orders”,另一个叫做“ daily_prices”。daily_prices如下: 订单如下: 两个数据帧的索引均为datetime.date。通过使用列表解析来遍历所有订单并在“ daily_prices”数据框中查找特定日期的特定报价,然后将该列表作为列添加到“订单”数据框中的“价格”列。 “订单”数据框。我想使用数组操作而不是循环执行此操作。

  • 我有一个数据帧,其中重复了一些 SongId。我想提取那些重复的行。知道怎么做吗?试: 但是效果不好。 这是我的数据帧的一个示例。在此示例中重复 SongId 0、10 和 16: