2014-01-27 2 views
0

Я хотел бы объединить несколько столбцов, которые приведут либо к списку строк, либо к списку целых чисел.Объединить столбцы и создать список

Я сделал это до сих пор;

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]?

+0

Там несколько ошибок в вашем коде должно быть 'data1 [data1.columns [0: 3]]. значения]' диапазоны открыты закрыты – EdChum

ответ

1

Только не используйте join:

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

Гош! Это было так просто. Что я делал! Благодарю. – richie

2

Используя регулярное выражение: (может быть легко изменен, чтобы извлечь отрицательные поплавки ...)

>>> import re 
>>> re.findall('(\d+)', '[1 4 7]') 
['1', '4', '7'] 
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()] 
+0

Я получаю вывод как '[1L, 4L, 7L]'. Почему это? как я их обрабатываю? – richie

+0

Это номера типа 'long'. Вы можете работать с ними, но чтобы получить значения 'int', см. Мое редактирование. – Xiphias

Смежные вопросы