如何将数字列转换为字符串列表?

时间:2016-05-27 03:08:29

标签: python-2.7 pandas

我不知道为什么我无法解决这个问题。但我有一列数字,我想把它变成一个字符串列表。我应该提到这个,当我最初发布这个,但这不是一个DataFrame或它来自一个文件这是一些代码的结果,抱歉不是试图浪费任何人的时间,我只是不想添加一堆杂乱。这正是它的打印方式。

这是我的数字栏。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<div>
    <h1>Input</h1>
  <span>9781137012920 9780230339118 9781137012920 1137012927</span>
</div>
<div id="output">
    <h1>Becomes</h1>
</div>

我希望他们看起来像这样。

3,1,3
3,1,3
3,1,3
3,3,3
3,1,1

我试图找到一种方法,不依赖于每行中有多少个数字或列中有多少组数字。

谢谢,真的很感激。

4 个答案:

答案 0 :(得分:0)

假设您从DataFrame开始

df = pd.DataFrame([[3, 1, 3], [3, 1, 3], [3, 1, 3], [3, 3, 3], [3, 1, 1]])

df.astype(str).apply(lambda x: ','.join(x.values), axis=1).values.tolist()

看起来像:

['3,1,3', '3,1,3', '3,1,3', '3,3,3', '3,1,1']

答案 1 :(得分:0)

my $has_POPC = qr/ \s+ POPC \s+ /x;
#Start for lipid count
for my $lipid (1 .. $lipid_num) {
    my $has_lipid = qr/ \s+ $lipid \s+ /x;

    # First Carbon/Integer counter
    for my $integer (2 .. 8) {
        my $has_C2_integer  = qr/ \s+ C2 $integer   \s+ /x;
        my $has_H_integer_R = qr/ \s+ H  $integer R \s+ /x;
        my $has_H_integer_S = qr/ \s+ H  $integer S \s+ /x;

        #Split line 1
        for my $line (@data) {
            chomp $line;

            #Search 1.1
            if ($line =~ $has_C2_integer && $line =~ $has_lipid && $line =~ $has_POPC)  {
                ($x1[0], $y1[0], $z1[0]) = (split /\s+/ $line)[ 5, 6, 7 ];
            }

            #Search 1.2
            if ($line =~ $has_H_integer_R && $line =~ $has_lipid && $line =~ $has_POPC) {
                ($x1[1], $y1[1], $z1[1]) = (split /\s+/ $line)[ 5, 6, 7 ];
            }

            #Search 1.3
            if ($line =~ $has_H_integer_S && $line =~ $has_lipid && $line =~ $has_POPC) {
                ($x1[2], $y1[2], $z1[2]) = (split /\s+/ $line)[ 5, 6, 7 ];
            }
        }
    }
}

答案 2 :(得分:0)

要将数据帧转换为字符串,请使用astype函数:

df = pd.DataFrame([[3, 1, 3], [3, 1, 3], [3, 1, 3], [3, 3, 3], [3, 1, 1]])
df = df.astype('str')

然后,操作列变得简单,您可以创建一个新列:

In [29]:

df['temp'] = df[0] + ',' + df[1] + ',' + df[2]
df
Out[29]:
0   1   2   temp
0   3   1   3   3,1,3
1   3   1   3   3,1,3
2   3   1   3   3,1,3
3   3   3   3   3,3,3
4   3   1   1   3,1,1

然后将其压缩成一个列表:

In [30]:

list(df['temp'])
Out[30]:
['3,1,3', '3,1,3', '3,1,3', '3,3,3', '3,1,1']

答案 3 :(得分:0)

# Done in Jupyter notebook
# add three quotes on each side of your column. 
# The advantage to dataframe is the minimal number of operations for 
# reformatting your column of numbers or column of text strings into 
# a single string

a = """3,1,3
3,1,3
3,1,3
3,3,3
3,1,1"""


b = f'"{a}"'
print('String created with triple quotes:')
print(b)

c = a.split('\n')
print ("Use split() function on the string. Split on newline character:")
print(c)

print ("Use splitlines() function on the string:")
print(a.splitlines())