写pandas iterrows输出到文件

时间:2017-05-26 19:36:53

标签: python pandas

两个数据帧

DF1:

Key names:
example_ca
example_com

Key names:
EXAMPLE_ca
EXAMPLE_com

DF2:

ch  start   end strand  5ss 3ss
3   90280167    90280927    +   90280167    90280927
3   90280167    90281242    +   90280167    90281242
3   90280986    90281242    +   90280986    90281242
3   90281284    90284526    +   90281284    90284526
5   33977824    33984550    -   33984550    33977824

代码:

ch  start   end strand  5ss 3ss
3   90280167    90281242    +   90280167    90281242
5   33977824    33984550    -   33984550    33977824

输出:

c1 = []
c = 0 
for ii,rr in df1.iterrows():
    c1.append(rr)


c2 = []
with open('3prime.txt', 'w') as w:  
     for i,r in df2.iterrows():
         c2.append(r)
     for i in c1:
         for j in c2:
             start = int(1[4])
             end = int(i[5])
             fivep = int(j[4])
             threep = int(j[5])

             if start == fivep:
                print i

期望的输出:

ch                                      3
start                            90280167
end                              90280927
strand                                  +
5ss                              90280167
3ss                              90280927
ch                                      5
start                            33983577
end                              33984550
strand                                  -
5ss                              33984550
3ss                              33983577

问题1:当我尝试写入文件时,我得到一个空白文件,其次我想这样做ch start end strand 5ss 3ss 3 90280167 90281242 + 90280167 90281242 #from df1 3 90280167 90281242 + 90280167 90281242 # fromdf2 5 33977824 33984550 - 33984550 33977824 # fromdf1 5 33977824 33984550 - 33984550 33977824 #fromdf2 是真的然后

打印i和下一行print j

像这样的事情

if start == fivep:

然后我试试这个

print i +'\n' + j
TypeError: unsupported operand type(s) for +: 'float' and 'str'

这意味着什么基本上是匹配的df1的第一行和匹配的df2的第二行具有匹配的行

当我尝试第二个打印语句时,我获得与第一个打印语句(打印i)相同的输出,但现在使用j中的元素,有人可以指导我如何处理此问题。

1 个答案:

答案 0 :(得分:0)

为什么不通过构建所需的数据框来跳过iterrows,然后使用df.to_csv('desired/path/to/file.csv')保存它?

例如,使用我理解的标准,例如

out1 = df1.merge(df2, on='5ss', suffixes=['', '_y'])[df1.columns]
out2 = df2.merge(df1, on='5ss', suffixes=['', '_y'])[df2.columns]
pd.concat(out1, out2).sort_index().to_csv('3prime.txt')

应该做你想做的事。