Python:将pd.Series的所有组合写入文本文件
Python: Write all combinations of a pd.Series in a text file
我有几个 Pandas 系列独特的字符串:
First Series
P0A8V2
P36683
P15254
Second Series
P09831
P0AFG8
我想编写一个如下所示的文本文件(制表符分隔符):
P0A8V2 P36683
P0A8V2 P15254
P36683 P15254
P09831 P0AFG8
所以在一个系列中,每个对象都与其他对象组合恰好一次。顺序无关紧要。然后下一个系列马上开始。
有简单的方法吗?
更新:
字符串在 DataFrame 的索引中。我使用 df.index.values 访问它们。 DataFrame 在 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'),)]
如何从该列表中写入文本文件?
看起来你快到了。
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
另一种方法是使用将系列转换为列表,然后使用 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))])
我有几个 Pandas 系列独特的字符串:
First Series
P0A8V2
P36683
P15254
Second Series
P09831
P0AFG8
我想编写一个如下所示的文本文件(制表符分隔符):
P0A8V2 P36683
P0A8V2 P15254
P36683 P15254
P09831 P0AFG8
所以在一个系列中,每个对象都与其他对象组合恰好一次。顺序无关紧要。然后下一个系列马上开始。
有简单的方法吗?
更新:
字符串在 DataFrame 的索引中。我使用 df.index.values 访问它们。 DataFrame 在 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'),)]
如何从该列表中写入文本文件?
看起来你快到了。
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
另一种方法是使用将系列转换为列表,然后使用 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))])