将熊猫数据转换为数组

Posted

技术标签:

【中文标题】将熊猫数据转换为数组【英文标题】:Convert pandas data to array 【发布时间】:2019-04-04 18:22:41 【问题描述】:

这里是熊猫初学者。 我有一个使用 Pandas 打开的 .CSV 文件。文件格式如下:-

PatientId    x    y    width    height    target
A12kxk       23   45   10       20        1
Aldkd2       92   22   12       30        1
Aldkd2       29   11   98       34        1
Alll34                 0

我想获取一个以 PatientId 为键的字典,该值将是一个二维数组,其中包含一位患者的一行的 x、y、宽度、高度,以及如下堆叠的各种行:-

字典["Aldkd2"] = 92 22 12 30 29 11 98 34

我想丢弃那些目标为 0 的。 对于单个患者 ID,表中有一行或多行。我该怎么做?

【问题讨论】:

***.com/questions/31789160/… 和 ***.com/questions/17071871/… 的可能重复 @cyril 我不认为它像上面那样重复 【参考方案1】:

希望这能解决你的问题,

dic= df.groupby('PatientId').apply(lambda x:x[['x','y','width','height']].values.tolist()).to_dict()

输出:

'Aldkd2': [[92.0, 22.0, 12.0, 30.0], [29.0, 11.0, 98.0, 34.0]], 'Alll34': [[nan, 0.0, nan, nan]], 'A12kxk': [[23.0, 45.0, 10.0, 20.0]]

现在你可以随心所欲,

print dic['Aldkd2']

输出:

[[92.0, 22.0, 12.0, 30.0], [29.0, 11.0, 98.0, 34.0]]

【讨论】:

【参考方案2】:

使用 Pandas,您可以将数据读入 Pandas Dataframe,如下所示:

import pandas as pd
df = pd.read_csv('data.csv')

此时,dataframes value 参数包含表数据。您可以遍历此数据以提取和构造您要查找的字典。大致如下:

patient_info_dict = 
for row in df.values:
    # At this point, the first value in 'row' is your dictionary key.

    # Check if the patient id is already a key in the dictionary
    if row[0] not in patient_info_dict:
        # Initialize an empty array
        patient_info_dict[row[0]] = []

        # Append the remaining data except for the key and the last value
        patient_info_dict[row[0]].append(row[1:-1])

    # If the patient id is already a key in the dictionary:
    else:
        # Append the remaining data except for the key and the last value
        patient_info_dict[row[0]].append(row[1:-1])

如果您使用以下命令打印字典:

print(patient_info_dict)

你会得到以下输出:

'A12kxk': [array([23, 45, 10, 20], dtype=object)], 'Aldkd2': [array([92, 22, 12, 39], dtype=object), array([29, 11, 98, 34], dtype=object)]

另一个答案肯定更 Pythonic,而且可能更有效。但是,如果您是 Python/Pandas 的新手,这可能有助于了解究竟发生了什么。

【讨论】:

非常感谢。虽然另一个答案是我现在要使用的,但是从长远来看,知道如何使用更少的内置函数来完成任务肯定会更有用。

以上是关于将熊猫数据转换为数组的主要内容,如果未能解决你的问题,请参考以下文章

将熊猫数据框转换为numpy数组[重复]

熊猫数据框如何将对象转换为数组并提取数组值

如何将包装为字符串的向量转换为熊猫数据框中的numpy数组?

将熊猫系列转换为numpy数组[重复]

如何将csv文件转换为numpy数组格式?

熊猫数据框列有带逗号的字符串如何将其转换为列表[关闭]