当前位置: 首页 > 知识库问答 >
问题:

如何获取一个特性的不同类的值列表?[重复]

柳弘方
2023-03-14

我有一个数据帧。我想得到不同类的所有值的列表。

df = pd.DataFrame([(3, 1),
                    (4, 3),
                    (6, 2),
                    (7, 2),
                    (2, 3),
                    (4, 2),
                    (4, 1),
                    (1, 3),
                    (6, 3),
                    (8, 1)],
                    columns=['Feature', 'Class'])

在上面的示例中,我有三个类,即1、2和3。我想得到一个类中所有不同值列表的输出。输出可以如下所示:

Class 1: [3, 4, 8]
Class 2: [6, 7, 4]
Class 3: [4, 2, 1, 6]

共有3个答案

魏君博
2023-03-14

您只需执行以下操作:

classes = df.groupby('Class')['Feature'].apply(list)

输出:

>>> classes
Class
1       [3, 4, 8]
2       [6, 7, 4]
3    [4, 2, 1, 6]
Name: Feature, dtype: object

您可以这样打印它们:

>>> for class_number, items in classes.items():
...     print(f'Class {class_number}: {items}')
...
Class 1: [3, 4, 8]
Class 2: [6, 7, 4]
Class 3: [4, 2, 1, 6]

如果你想获得所有独特的值,试试这个:

unique = df.groupby('Class')['Feature'].unique()
别子实
2023-03-14
d = {}
[d.setdefault(v.Class, []).append(v.Feature) for _, v in df.iterrows()]
d
# {1: [3, 4, 8], 3: [4, 2, 1, 6], 2: [6, 7, 4]}
鲁鹤轩
2023-03-14

正如在这个伟大的答案中所指出的,您可以使用pandas.DataFrame.groupby()方法以及pandas.DataFrame.apply()方法来实现这一点:

import pandas as pd

df = pd.DataFrame([(3, 1),
                   (4, 3),
                   (6, 2),
                   (7, 2),
                   (2, 3),
                   (4, 2),
                   (4, 1),
                   (1, 3),
                   (6, 3),
                   (8, 1)],
                  columns=['Feature', 'Class'])

print(df.groupby('Class')['Feature'].apply(list))

输出:

Class
1       [3, 4, 8]
2       [6, 7, 4]
3    [4, 2, 1, 6]
Name: Feature, dtype: object

但是,如果要逐个循环遍历类号,更直观的方法是使用pandas.DataFrame.loc属性,如下所示:

print(df.loc[df['Class'] == 1])

输出:

   Feature  Class
0        3      1
6        4      1
9        8      1

或者包括“功能”列以获取:

print(df.loc[df['Class'] == 1]["Feature"])

输出:

0    3
6    4
9    8
Name: Feature, dtype: int64
 类似资料:
  • 我根据列生成了一个唯一的值,但我想得到的结果是来自不同列的转换值。下面是代码供您参考: 获取唯一值 预期结果:

  • 我正在使用python开发web框架。下面是我的数据库。这个数据库名是fruit。 我在用炼金术。所以类名是水果。我应该写些什么来得到下面的结果。。?我想从“名称”列中获取值。 [‘苹果’、‘梨’、‘葡萄’] 有没有办法直接执行SQL查询。。?

  • 假设我有员工数据列表。 使用上面的empList,如何获得两个不同的列表,如年龄

  • 问题内容: 我有一个名为“ posts”的SQL表,如下所示: 每个类别编号对应一个类别。我将如何计算每个类别在 一个sql查询中 全部出现在帖子中的次数? 例如,这样的查询可能返回如下符号数组: 我当前的方法是对每个可能的类别使用查询,例如:,然后将返回值组合到最终数组中。但是,我正在寻找一种仅使用一个查询的解决方案。 问题答案:

  • 我需要你对Web应用程序概念的帮助。我想使用单个查询从不同的表中获取不同的列。所有表中的一列都是相同的,比如pk_data(varchar)。但是我需要基于列的不同列。例如,我需要第一个表的用户名和第二个表的地址,第三个表的年龄和第四个表的成本。但是我还需要使用带有列的where子句。 我们可以用其他方式理解这个问题。我有一个变量,其中包含许多。我想根据此记录获取数据。 并且< code>Hash

  • 问题内容: 假设我的表包含以下内容: 每次通过while循环。我想获取价格值的总和,但ID中的每个不同值仅获取一次 因此,以上述示例为例,我将得到类似以下内容的信息: 补充一下,我可能偶然发现了类似的帖子。问题是其他职位使用Oracle,另一方面我正在使用MySQL。 问题答案: 你需要和