在pandas datafram中使用查询语句选择列

2024-10-17 16:33:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下熊猫数据帧。每个点与每个类的“n”个类点组合,每个组合的值为0或1。 现在对于每一点,我想得到一个最大数为“0”的类。 输出: 第1-a部分 第2-b部分

我试过用哈希表,但有点麻烦。什么是一个优雅的pandas数据帧查询?在

+------+-------+-------+--+--+--+
| Pt.  | class | value |  |  |  |
+------+-------+-------+--+--+--+
| Pt.1 | a     |     0 |  |  |  |
| Pt.1 | a     |     0 |  |  |  |
| Pt.1 | a     |     1 |  |  |  |
| Pt.1 | b     |     0 |  |  |  |
| Pt.1 | b     |     1 |  |  |  |
| pt.1 | b     |     1 |  |  |  |
| Pt.2 | a     |     1 |  |  |  |
| Pt.2 | a     |     1 |  |  |  |
| Pt.2 | a     |     1 |  |  |  |
| Pt.2 | b     |     0 |  |  |  |
| Pt.2 | b     |     0 |  |  |  |
| Pt.2 | b     |     0 |  |  |  |
|      |       |       |  |  |  |
+------+-------+-------+--+--+--+

Tags: 数据ptpandasvalueclass类点
1条回答
网友
1楼 · 发布于 2024-10-17 16:33:43

首先,按^{}只过滤0行,然后用^{}对输出进行排序的^{}进行计数,因此有必要通过索引先查找index值:

df = (df[df['value'] == 0].groupby('Pt.')['class']
                          .apply(lambda x: x.value_counts().index[0])
                          .reset_index(name='top1'))
print (df)
    Pt. top1
0  Pt.1    a
1  Pt.2    b

使用^{}进行过滤的类似替代:

^{pr2}$

相关问题 更多 >