2016-08-07 2 views
1

나는 독특한 캐릭터의 여러 팬더 시리즈가 있습니다파이썬 : 텍스트 파일에 pd.Series의 모든 조합을 쓰기

First Series 
    P0A8V2 
    P36683 
    P15254 

    Second Series 
    P09831 
    P0AFG8 

나는이 (탭 구분자)처럼 보이는 TEXTFILE 쓰고 싶은 :

P0A8V2 P36683 
P0A8V2 P15254 
P36683 P15254 
P09831 P0AFG8 

그래서 일련의 모든 개체는 정확히 한 번씩 결합됩니다. 명령은 중요하지 않습니다. 그런 다음 바로 다음 시리즈가 시작됩니다.

쉬운 방법이 있나요?

UPDATE :

스트링스는 DataFrame의 인덱스에 있습니다. df.index.values를 사용하여 액세스합니다. DataFrames는 df_list에 있습니다.

def Cluster_Network(df_list): 
    combi_list = [] 
    for cluster in df_list: 
     combi_list.append(tuple(itertools.combinations(cluster.index.values, 2))) 
    return combi_list 

그 안에 쌍이있는 튜플 목록을 얻습니다.

[('P77717', 'P10378'), 
    ('P18393', 'P77444'), 
    ('P18393', 'P0AD44'), 
    ('P18393', 'P10378'), 
    ('P77444', 'P0AD44'), 
    ('P77444', 'P10378'), 
    ('P0AD44', 'P10378')), 
(('P77562', 'P41039'),)] 

어떻게 그 목록에서 텍스트 파일을 쓸 수 있습니까?

+2

시도한 것을 보여줄 수 있습니까? – Merlin

답변

3

거의 다 왔다고 보입니다.

combi_list = [] 
for cluster in df_list: 
    combi_list.append(pd.DataFrame(list(itertools.combinations(cluster.index, 2)))) 
result_df = pd.concat(combi_list, ignore_index=True) 
result_df.to_csv(filename, sep='\t', index=False, header=False) 

이이 같은 파일을 생성합니다 :

P0A8V2 P36683 
P0A8V2 P15254 
P36683 P15254 
P09831 P0AFG8 
+0

고맙습니다. 제 파일이 옳은 것 같습니다. 하지만 오류가 발생합니다 : IOError : [Errno 22] 잘못된 모드 ('w') 또는 파일 이름 : 'Cluster_Network.csv' – Benni

+0

경로에 대해 문제가 될 수 있습니까? http://stackoverflow.com/questions/15141761/region-ioerror-errno-22-invalid-mode-w-or-filename – ayhan

+0

오류가 어떻게 든 사라졌습니다 ... – Benni

1

목록 다음 원하는 결과를 얻을 수 itertools.combinations를 사용하는 시리즈를 변환 사용하는 것이 작업을 수행하는 또 다른 방법은 ... 좋아요,

import pandas as pd 
s1 = pd.Series(['a', 'b', 'c']) 
s2 = pd.Series(['d', 'e']) 

import itertools 
s= s1.tolist() 
s.extend(s2.tolist()) 
open('test.txt','w').writelines(["%s\t%s\n" % (item[0], item[1]) for item in list(itertools.combinations(s,2))])