0

我正在尝试逐列迭代 Python pandas 创建的数据框。虽然很容易让 Python 打印出一整列,但我根本不知道如何将这列数据转换为列表或字符串,以便我可以实际使用它包含的数据(在这种情况下,连接数据并复制到 FASTA 文件中)。我的代码如下。任何建议将不胜感激。

import sys
import string
import shlex
import numpy as np
import pandas as pd
SNP_df = pd.read_csv('SNPs.txt',sep='\t',index_col = None ,header = None, nrows = 101) 

output = open('100 SNPs.fa','a')

i=1
for i in SNP_df[i]:
    data = SNP_df[i]
    data = shlex.shlex(data, posix = True)
    data.whitespace += "\n"
    data.whitespace_split = True
    data = list(data)
    for j in data:
        if j == 0:
            output.write(("\n>%s\n")%(str(data(j))))
        else:
            output.write(data(j))

Here are the first few lines of my data file: POSITION REF AR_DM1005 AR_DM1015 AR_DM1050 AR_DM1056 AR_DM1088 AR_KB635 AR_KB652 AR_KB754 AR_KB819 AR_KB820 AR_KB827 AR_KB945 AR_MSH126 AR_MSH51 PP_BdA1134-13 PP_BdA1137-10 PP_DM1038 PP_DM1049 PP_DM1054 PP_DM1065 PP_DM1081 PP_DM1084 PP_JR83 ST_JR138 ST_JR158 ST_JR209 ST_JR72 ST_JR84 ST_JR91 ST_MSH177 ST_MSH217 CH_JR198 CH_JR20 CH_JR272 CH_JR356 CH_JR377 CH_KB888 CH_MSH202 TL_MA1959 TL_MSH130 TL_SCI12-2 TL_SPE123_2-3 TL_SPE123_5-1 TL_SPE123_6-3 TL_SPE123_7-1 TL_SPE123_8-1 CUSP_SPE132_34_1-2
55 CTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTC
380 GGAAGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGAG GGGGGGGG
391
AAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
第422章 第422

4

2 回答 2

0

只需使用 numpy!您可以轻松地将 Series(1 列 DataFrame)转换为 1D numpy 数组!

import numpy as np
for i in SNP_df:
    data = SNP_df[i]
    data = np.array(data)
    for j in data:
        if j == 0:
            output.write(("\n>%s\n")%(str(data(j))))
        else:
            output.write(data(j))
于 2013-05-02T20:17:30.117 回答
0

使用您的示例数据。请注意,由于复制和粘贴选项卡成为空白(因此使用 sep='\s+', iso '\t'),并且我已将数据的第一行设置为列名(不使用 header=None)。可以使用 join 将一列连接到字符串。

In [20]: from StringIO import StringIO

In [21]: data = """\
   ....: POSITION REF AR_DM1005 AR_DM1015 AR_DM1050 AR_DM1056 AR_DM1088 AR_KB635 AR_KB652 AR_KB754 AR_KB819 AR_KB820 AR_KB827 AR_KB945 AR_MSH126 AR_MSH51 PP_BdA1134-13 PP_BdA1137-10 PP_DM1038 PP_DM1049 PP_DM1054 PP_DM1065 PP_DM1081 PP_DM1084 PP_JR83 ST_JR138 ST_JR158 ST_JR209 ST_JR72 ST_JR84 ST_JR91 ST_MSH177 ST_MSH217 CH_JR198 CH_JR20 CH_JR272 CH_JR356 CH_JR377 CH_KB888 CH_MSH202 TL_MA1959 TL_MSH130 TL_SCI12-2 TL_SPE123_2-3 TL_SPE123_5-1 TL_SPE123_6-3 TL_SPE123_7-1 TL_SPE123_8-1 CU_SPE123_1-2 CU_SPE123_4-1 Dmir_SP138
   ....: 55 C T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T C
   ....: 380 G G A A G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G A G G G G G G G G G
   ....: 391 A A G A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
   ....: 402 G A A A A G A A A A A A A A A G A A A A A A A A A A A A A A A A A A A G A A A G A A A A G A A A A G
   ....: 422 A C C C C C C C C C C C C C C A A C C C C C C C C C C C C C C C C C C A C C C A C C C C A C C C C A
   ....: 564 G G G G G G G G G G G G G G G G G G G G G G G G A A G G G G G G A G G G G G G G G G G G G G G G G G
   ....: """

In [22]: import pandas as pd

In [23]: SNP_df = pd.read_csv(StringIO(data), sep='\s+', index_col=None, nrows=101)

In [24]: SNP_df['AR_DM1005']
Out[24]:
0    T
1    G
2    A
3    A
4    C
5    G
Name: AR_DM1005, dtype: object

In [25]: ''.join(SNP_df['AR_DM1005'])
Out[25]: 'TGAACG'
于 2013-05-03T10:34:07.370 回答