操作数据集
Manipulating DataSet
我有一个包含 3 列和超过 300,000 行的数据集。前两列显示患者正在经历的症状,最后一列显示他们接种的疫苗。我想要一个数据集来计算每种疫苗的症状组合数。我在下面附加了一个示例数据集和我想要的内容:
Exp=pd.DataFrame({'sym1':['pain','fever','headache','pain','paralysis'],\
'sym2':['fever','Cancer','paralysis','fever','pain'],'Vaccine':['a','b','c','a','d']})
看起来像这样:
sym1 sym2 Vaccine
0 pain fever a
1 fever Cancer b
2 headache paralysis c
3 pain fever a
4 paralysis pain d
我要的是这个:
Result=pd.DataFrame({'sym1':['pain','fever','headache','paralysis'],\
'sym2':['fever','Cancer','paralysis','pain'],'Vaccine':['a','b','c','d'],'Count':[2,1,1,1,]})
看起来像这样:
sym1 sym2 Vaccine Count
0 pain fever a 2
1 fever Cancer b 1
2 headache paralysis c 1
3 paralysis pain d 1
如果您的 pandas
版本 > 1.1.0,您可以:
counts_df = (Exp.value_counts()
.rename("counts")
.reset_index())
print(counts_df)
sym1 sym2 Vaccine counts
0 pain fever a 2
1 paralysis pain d 1
2 headache paralysis c 1
3 fever Cancer b 1
有很多方法可以做到这一点:
使用 groupby,转换和计数并删除重复项:
Exp["Count"] = Exp.groupby(["sym1", "sym2", "Vaccine"])["sym1"].transform("count")
# Can add a reset_index if needed
Exp = Exp.drop_duplicates()
或者一个经典的 group by and agg:
Exp = Exp.groupby(["sym1", "sym2", "Vaccine"], as_index=False).agg(Count=("sym1", "count"))
虽然卡梅伦有一个非常聪明的方法。
我有一个包含 3 列和超过 300,000 行的数据集。前两列显示患者正在经历的症状,最后一列显示他们接种的疫苗。我想要一个数据集来计算每种疫苗的症状组合数。我在下面附加了一个示例数据集和我想要的内容:
Exp=pd.DataFrame({'sym1':['pain','fever','headache','pain','paralysis'],\
'sym2':['fever','Cancer','paralysis','fever','pain'],'Vaccine':['a','b','c','a','d']})
看起来像这样:
sym1 sym2 Vaccine
0 pain fever a
1 fever Cancer b
2 headache paralysis c
3 pain fever a
4 paralysis pain d
我要的是这个:
Result=pd.DataFrame({'sym1':['pain','fever','headache','paralysis'],\
'sym2':['fever','Cancer','paralysis','pain'],'Vaccine':['a','b','c','d'],'Count':[2,1,1,1,]})
看起来像这样:
sym1 sym2 Vaccine Count
0 pain fever a 2
1 fever Cancer b 1
2 headache paralysis c 1
3 paralysis pain d 1
如果您的 pandas
版本 > 1.1.0,您可以:
counts_df = (Exp.value_counts()
.rename("counts")
.reset_index())
print(counts_df)
sym1 sym2 Vaccine counts
0 pain fever a 2
1 paralysis pain d 1
2 headache paralysis c 1
3 fever Cancer b 1
有很多方法可以做到这一点:
使用 groupby,转换和计数并删除重复项:
Exp["Count"] = Exp.groupby(["sym1", "sym2", "Vaccine"])["sym1"].transform("count")
# Can add a reset_index if needed
Exp = Exp.drop_duplicates()
或者一个经典的 group by and agg:
Exp = Exp.groupby(["sym1", "sym2", "Vaccine"], as_index=False).agg(Count=("sym1", "count"))
虽然卡梅伦有一个非常聪明的方法。