是否可以将Python熊猫数据帧中的单列数据复制到字符串或列表中进行进一步处理



我正在尝试逐列迭代Python熊猫创建的数据帧。虽然让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>%sn")%(str(data(j))))
        else:
            output.write(data(j))

以下是我的数据文件的前几行:位置参考AR_DM1005 AR_DM1015 AR_DM1050 AR_DM1056 AR_DM1088 AR_KB635 AR_KB652 AR_KB 754 AR_KB819 AR_K 820 AR_KB827 AR_KR945 AR_MSH126 AR_MSH51 PP_BdA1134-13 PP_BdA113 7-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_JR20CH_JR272 CH_JR356 CH_JR377 CH_KB888 CH_MSH202 TL_MA1959 TL_MSH130 TL_SCI12-2 TL_SPE123_2-3 TL_SPE1230_5-1 TL_SPE123 _6-3 TL_SPE 123_7-1 TL_SPE 123 _8-1 CU_SPE 123_1-2 CU_SPE123_4-1 Dmir_SP138
55摄氏度380 G G A G G G G391 A A G A A A A A.A A A A A A A402 A A A A G A A A B A A A422564 G G G G

只需使用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>%sn")%(str(data(j))))
        else:
            output.write(data(j))

使用示例数据。注意,由于复制&粘贴制表符,因为有空格(所以使用sep='\s+',iso'\t'(,我已经将数据的第一行设置为列名(而不是使用header=None(。可以使用联接将一列连接到字符串。

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'

最新更新