2016-06-21 91 views
1

我有一個小樣本數據集:保存線文件根據病情大熊貓蟒蛇

import pandas as pd 


df = {'ID': ['H576','H577','H577','H578','H600', 'H700', 'H700'], 
    'CD': ['AAAAAAA', 'BBBBB', 'CCCCCC','DDDDDD', 'EEEEEEE','FFFFFFF','GGGGGGG']} 

df = pd.DataFrame(df) 

它看起來像:

df 
Out[9]: 
     CD ID 
0 AAAAAAA H576 
1 BBBBB H577 
2 CCCCCC H577 
3 DDDDDD H578 
4 EEEEEEE H600 
5 FFFFFFF H700 
6 GGGGGGG H700 

對於擁有多張CD值的每個ID,我想將它們保存到單獨的文件中。

我的願望輸出文件:

H577.txt

CD  ID 
BBBBB H577 
CCCCCC H577 

H700.txt

CD  ID 
FFFFFFF H700 
GGGGGGG H700 

我嘗試:

import pandas as pd 


df = {'ID': ['H576','H577','H577','H578','H600', 'H700', 'H700'], 
    'CD': ['AAAAAAA', 'BBBBB', 'CCCCCC','DDDDDD', 'EEEEEEE','FFFFFFF','GGGGGGG']} 

df = pd.DataFrame(df) 

df1 = (df.groupby('ID').filter(lambda x: ('if CD has more than one value for the same ID'.any()))) 

df1.groupby('ID').apply(lambda gp: gp.to_csv('ID{}.txt'.format(gp.name), sep='\t', index=False)) 

我不知道如何編碼「如果CD有多個同一ID的值」部分。

+0

這個問題簡化爲一個尋找重複列表一個簡單的谷歌搜索返回這個:'http://stackoverflow.com/questions/9835762/find-and-list-duplicates-in-python-list'。您必須將其應用到ID列表中,從那時起,這很容易。 –

+0

@Ev。 Kounis從帖子的答案是刪除重複項,在我的情況下,我不想這樣,我仍然是新的python,我不知道如何適應lambda風格的代碼。 – Jessica

+0

它不,但我可以爲你取。你想要df1是什麼?像df這樣的結構只包含重複項? –

回答

1

試試這個:

(df.groupby('ID') 
    .filter(lambda g: len(g) > 1) 
    .groupby('ID') 
    .apply(lambda gp: gp.to_csv('ID{}.txt'.format(gp.name), sep='\t', index=False)) 
) 

輸出

IDH577.txt:

CD ID 
BBBBB H577 
CCCCCC H577 

IDH700.txt:

CD ID 
FFFFFFF H700 
GGGGGGG H700