如何使用Pandas从数据集中提取resource列的唯一值数组
提取数据集中resource列的唯一值数组
我有一个包含多列的数据集,示例如下:
patient, action, org:resource, DateTime patient 0, First consult, Dr. Anna, 2017-01-02 11:40:11 patient 0, Blood test, Lab, 2017-01-02 12:47:33 patient 0, Physical test, Nurse Jesse, 2017-01-02 12:53:50 patient 0, Second consult, Dr. Anna, 2017-01-02 16:21:06 patient 0, Surgery, Dr. Charlie, 2017-01-05 13:23:09 patient 0, Final consult, Dr. Ben, 2017-01-09 08:29:28 patient 1, First consult, Dr. Anna, 2017-01-02 12:50:35 patient 1, Physical test, Nurse Jesse, 2017-01-02 13:59:14 patient 1, Blood test, Lab, 2017-01-02 14:20:19 patient 1, X-ray scan, Team 1, 2017-01-06 09:13:40 patient 1, Second consult, Dr. Anna, 2017-01-06 10:38:04 patient 1, Medicine, Pharmacy, 2017-01-06 11:47:36
我希望获取一个包含resource列所有不重复值的数组,示例输出如下:
resources = ['Dr. Anna', 'Lab', 'Nurse Jesse', 'Dr. Charlie', 'Dr. Ben', 'Team 1', 'Pharmacy']
我尝试了以下代码,但这不是正确的方法,请问该如何实现?
fn = 'data2.csv' events = pd.read_csv(fn) events.columns = ['patient', 'action', 'resource', 'datetime'] resourcenums = [e for (i, e) in enumerate(events['resource'])]
解决方案
直接使用Pandas的unique()方法获取列中的唯一值,再通过tolist()转换为Python列表即可:
fn = 'data2.csv' events = pd.read_csv(fn) # 重命名列(你这里的列名映射是正确的) events.columns = ['patient', 'action', 'resource', 'datetime'] # 获取唯一值并转为列表 resources = events['resource'].unique().tolist() print(resources)
执行后会得到你需要的结果:
['Dr. Anna', 'Lab', 'Nurse Jesse', 'Dr. Charlie', 'Dr. Ben', 'Team 1', 'Pharmacy']
补充说明
unique()方法返回的唯一值顺序与它们在数据集中首次出现的顺序一致,和示例输出匹配。- 如果需要对结果排序,可以在转换为列表后使用
sorted():# 排序后的唯一值列表 sorted_resources = sorted(events['resource'].unique().tolist())
内容的提问来源于stack exchange,提问作者Lkmuraz
相关产品推荐
相关产品推荐

