【发布时间】:2016-04-22 06:11:17
【问题描述】:
我使用条件语句(未显示)从 2 个输入文件生成了 2 个字典。然后我打算使用这两个字典来识别重叠的值。然后我想直接将迭代的输出用作熊猫数据框。为此,我首先将迭代/for 循环输出到文件 (Output.xls) 中,然后将该文件作为 pandas 数据帧读取。虽然这很好用,但我想知道是否有一种方法可以直接使用下面迭代中的“换行符”作为空熊猫数据框的输入。除了 dataFrame.from_dict 之外,我在 Python 上找不到执行此操作的选项。但是,这需要 1 部字典,但我有多个要连接在一起的字典,以及我正在使用的其他变量。
exp1_dict.items() 是: [('lnc3', ['SPATA1', 'AHNAK', 'FGG', 'ERAP1', 'HZ', 'SAASDAS', 'NLRC5', 'HUWE1']), ('lnc2', ['SPATA1' , 'FGG', 'TMEM68', 'ATP6AP', 'HUWE1']), ('lnc1', ['SPATA1', 'AHNAK', 'FGG', 'TMEM68', 'ERAP1', 'ATP6AP', ' SAASDAS'、'RAD17'、'HUWE1'])] exp2_dict.items() 是: [('lnc3', ['SPATA1', 'AHNAK', 'TMEM68', 'ERAP1', 'HZ', 'RAD17', 'NLRC5', 'HUWE1']), ('lnc2', ['SPATA1' , 'FGG', 'ERAP1', 'HZ']), ('lnc1', ['SPATA1', 'AHNAK', 'FGG', 'TMEM68', 'ERAP1', 'HZ', 'ATP6AP', ' RAD17']), ('lnc4', ['ERAP1', 'PRSS16', 'HZ', 'NLRC5'])]遍历字典并生成“换行符”的代码是:
out = open("Output.xls", "w") #generates an empty output file
out.write('Header1\tHeader2\tHeader3\tHeader4\tHeader5\tHeader6\tHeader7\tHeader8\tHeader9\tHeader10\tHeader11\n')#Adds header to output file
intersection_dict={} #empty intersection header
for key, value1 in exp1_dict.items(): #reiterates over the 2 dictionaries
if key in exp2_dict.keys():
intersection_dict[key]=list(set(value1).intersection(exp2_dict[key]))
newline=key, str(f_exp1_dict[key]), str(f_exp2_dict[key]), str('|'.join(value1)), str(len(exp1_dict[key])), str(len(exp1_corr.index)), str('|'.join(exp2_dict[key])), str(len(exp2_dict[key])), str(len(exp2_corr.index)), str('|'.join(intersection_dict[key])), str(len(intersection_dict[key]))
out.write('\t'.join(newline)+'\n')
然后我使用 pandas 数据框读取 Output.xls 文件:
out.close()
new_input=pd.read)table("Output.xls", index_col=0)
我想知道是否有办法将上面的“换行符”直接写入带有上面标题的空熊猫数据帧,而不是创建一个输出文件然后将其作为熊猫数据框输入。
Output.xls 文件如下所示:
标题 1 标题 2 标题 3 标题 4 标题 5 标题 6 标题 7 标题 8 标题 9 标题 10 标题 11 lnc3 4 4 SPATA1|AHNAK|FGG|ERAP1|HZ|SAASDAS|NLRC5|HUWE1 8 12 SPATA1|AHNAK|TMEM68|ERAP1|HZ|RAD17|NLRC5|HUWE1 8 12 HZ|ERAP1|AHNAK|HUWE1|NLRC5|SPATA1 6 lnc2 2 3 SPATA1|FGG|TMEM68|ATP6AP|HUWE1 5 12 SPATA1|FGG|ERAP1|HZ 4 12 SPATA1|FGG 2 lnc1 1.5 2 SPATA1|AHNAK|FGG|TMEM68|ERAP1|ATP6AP|SAASDAS|RAD17|HUWE1 9 12 SPATA1|AHNAK|FGG|TMEM68|ERAP1|HZ|ATP6AP|RAD17 8 12 ERAP1|RAD17|AHNAK|TMEM68|ATP6AP|SPATA1 |FGG 7【问题讨论】:
-
几乎可以肯定,有一种简单的方法可以做到这一点。但是,我很不清楚输入的样子。如果问题得到简化,我会更容易提供帮助。
-
@piRSquared thx 发表评论。我已经添加了上面的字典。我希望这会有所帮助。
-
我假设这是 Python 3?另外,
f_exp1_dict和f_exp2_dict是什么? -
@Alexander 它是 Python 2.7.10 |Anaconda 2.4.0 (x86_64)| (默认,2015 年 10 月 19 日,18:31:17).f_exp1_dict1 和 f_exp2_dict2 是其他字典,每个对应的键都有一个值
-
您能否为他们提供相关的键/值对,以便我们运行您的代码?还有
exp1_corr/exp2_corr
标签: python dictionary pandas dataframe