在Pandas

时间:2015-12-13 23:04:08

标签: python csv pandas

我有一个非常大的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

1 个答案:

答案 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