连接列并创建列表

时间:2014-01-27 13:19:47

标签: python pandas

我想连接几个导致字符串列表或整数列表的列。

到目前为止我已经这样做了;

data1 = pd.DataFrame({'A':[1,2,3],'B':[4,5,6],'C':[7,8,9]})

data1['D'] = [' '.join(str(row)) for row in data1[data1.columns[0:3]].values] # add a new column by concatenating the existing columns

   A  B  C              D
0  1  4  7  [ 1   4   7 ]
1  2  5  8  [ 2   5   8 ]
2  3  6  9  [ 3   6   9 ]

如何将字符串'[1 4 7]'转换为['1','4','7']之类的字符串列表或[1,4,7]之类的整数列表?

3 个答案:

答案 0 :(得分:2)

使用正则表达式:(可以很容易地修改以提取负浮点数...)

>>> import re
>>> re.findall('(\d+)', '[1 4 7]')
['1', '4', '7']

答案 1 :(得分:2)

如果没有必要,您不必将它们连接到字符串。

import pandas as pd
data1 = pd.DataFrame({'A':[1,2,3],'B':[4,5,6],'C':[7,8,9]})
longs = data1.iloc[0].tolist()

iloc[0]选择DataFrame的第一项,tolist()将其转换为列表。您将获得long类型的数字列表。

然后使用此选项将列表值转换为int

ints = [int(x) for x in longs]

长话短说:

ints = [int(x) for x in data1.iloc[0].tolist()]

答案 2 :(得分:1)

请勿使用join

data1['E'] = [row for row in data1[data1.columns[0:3]].values]