首页 > 解决方案 > 如何在数据框系列中包含有关组的删除信息?

问题描述

我有以下数据框,我想在满足条件后包含基于“个人 ID”的所有信息。

import pandas as pd


data = [['A-1', 'Birth','0'],
        ['A-1','Sickle cell',"5"],['A-1', 'Lung cancer',"25"],
        ['A-1','Death','35'],['A-2', 'Birth', '0'],
        ['A-2','Sarcoma','10'],['A-2', 'Melanoma','19'], 
        ['A-2', 'Current Age', '20'], ['A-3', 'Birth',"0"],
        ['A-3','Sickle cell','25'],['A-3', "Skin cancer", "29"], 
        ['A-3', "Current Age", '40']]

df = pd.DataFrame(data,columns=["Individual ID", "Diagnosis","Age"])

print df

我尝试了以下代码:

first = pd.DataFrame(df.groupby("Individual ID").filter(lambda g: g["Individual ID"].size > 3))

breast1 = ((first["Repeat Instance"] == 1) & (first["Diagnosis"] != "Sickle cell"))  

after = first[breast1]

print after

运行代码后,我得到这个:

  Individual ID    Diagnosis Age Repeat Instance
1           A-1  Sickle cell   5               1
9           A-3  Sickle cell  25               1

我想获取个人 A-1 和 A-3 的其余信息(出生、当前年龄、其他诊断),但无法弄清楚。

任何帮助将不胜感激。

标签: pythonpandas

解决方案


我以pythonic方式回答

df = pd.DataFrame(data,columns=["Individual ID", "Diagnosis","Age"])
search = '0'
a = list(filter(lambda x:x[2]==search,data))
print (a)

它返回第三个元素为 0 的列表,您可以自定义它


推荐阅读