Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python表示一列的矩阵,该列的矩阵值由相应的列表示_Python_Python 2.7 - Fatal编程技术网

Python表示一列的矩阵,该列的矩阵值由相应的列表示

Python表示一列的矩阵,该列的矩阵值由相应的列表示,python,python-2.7,Python,Python 2.7,我有这些数据,比如d1: Fruits Person Mango 1 Banana 1 Orange 2 Mango 1 Banana 3 Orange 1 Mango 2 Banana 3 Orange 2 Mango 2 我希望输出如下: Fruit2 Fruit1 Mango Banana Orange Mango 2 0 2 Banana 0 Orange 一种矩阵,其中的值为已获

我有这些数据,比如d1:

Fruits  Person
Mango   1
Banana  1
Orange  2
Mango   1
Banana  3
Orange  1
Mango   2
Banana  3
Orange  2
Mango   2
我希望输出如下:

               Fruit2
Fruit1   Mango     Banana   Orange
Mango   2   0   2
Banana  0       
Orange

一种矩阵,其中的值为已获取
grout1
grout2
的不同人数。有人能告诉我一种方法来做这件事吗。谢谢。

在不知道您的数据集是什么
类型时,我将放弃假设它是一个基于您所呈现结构的元组列表

因此,如果
fruit1
是一个元组列表,每个元组包含水果的名称和人的id。使用列表理解,您可以计算水果和人一起出现的次数,如下所示:

import itertools

fruit1 = [
    ('Mango', 1),
    ('Banana', 1),
    ('Orange', 2),
    ('Mango', 1),
    ('Banana', 3),
    ('Orange', 1),
    ('Mango', 2),
    ('Banana', 3),
    ('Orange', 2),
    ('Mango', 2),
]

# define sort order (person, fruit)
keyfunc = lambda t: (t[1], t[0])

# sort fruit1
fruit1.sort(key=keyfunc)

# create fruit2
fruit2 = [(len(list(val)), key) for (key, val) in itertools.groupby(fruit1, keyfunc)]

# output
[
    (1, (1, 'Banana')),
    (2, (1, 'Mango')),
    (1, (1, 'Orange')),
    (2, (2, 'Mango')),
    (2, (2, 'Orange')),
    (2, (3, 'Banana')),
]
正如您所看到的,
fourt2
是一个元组列表,与
fourt1
一样,还添加了水果/人的出现次数。所以
person1
有1个条目或
Banana
,2个条目是
Mango
,依此类推


它不完全是一个矩阵,但是,很难用提供的信息更具体。

d1是什么类型的?列表、目录等。你是按每个
人计算
水果
还是按
人计算
水果
还是按
人计算
水果
?我是按不同的人计算水果对水果的数量。知道这一点会很有帮助。
Person
d1
中除了按类型划分的水果数量外,是否有任何不同的值?身份证、姓名等。不,不幸的是没有。将1,2,3等视为唯一的ID号。希望我能让你们明白,但这不是我所期望的。更重要的是,我想要一个交叉表,将水果子类别作为行和列,并将值与食用水果的不同人群相关联。我希望这更有意义。只是为了让它更清楚,我想要类似python中的链接。这是在R中完成的。