我有一个非常大的CSV文件,包含122290行。订单如下:
Feature, Person
Fever, Pat1
Headache, Pat1
Burping, Pat1
Fever, Pat2
Obese, Pat2
Headache, Pat2
Jaundice, Pat2
我想制作一张新桌子。该表是每位患者的特征组合......我想看看某些症状是否显示出现的集群。我用Python和csv.reader做了这个。但因为它一直在循环,所以需要几个小时才能获得122290行。每个病人都有约。 305症状......有405名患者。我不想要像Feature1 == Feature2这样的重复...我想知道这是否也可能在熊猫中...如果是这样,你能说出你将如何开始解决这个问题吗?谢谢!
Feature1, Feature2, Person
Fever, Headache, Pat1
Fever, Burping, Pat1
Heache, Burping, Pat1
Fever, Obese, Pat2
Fever, Headache, Pat2
Fever, Jaundice, Pat2
Obese, Headache, Pat2
Obese, Jaundice, Pat2
Headache, Jaundice, Pat2
答案 0 :(得分:3)
使用merge
。您可以将DataFrame与其自身进行自我合并,然后删除额外的对(功能可以反转或与自身配对)。
df2 = pandas.merge(df, df, on='Person', suffixes=['1', '2'])
df2 = df2[df2.Feature1 < df2.Feature2]
结果:
Person Feature1 Feature2
Pat1 Fever Headache
Pat1 Burping Fever
Pat1 Burping Headache
Pat2 Fever Obese
Pat2 Fever Headache
Pat2 Fever Jaundice
Pat2 Headache Obese
Pat2 Headache Jaundice
Pat2 Jaundice Obese