2016-05-27 3 views
0

Я относительно новичок в pandas и теперь пытаюсь преобразовать строки Pandas DataFrame в списки строк.python pandas dataframe to list string error

Это хорошо работает, однако строки в исходном DataFrame по-видимому модифицированы в списке, поскольку по какой-то причине некоторые добавляют символ «L».

Я ценю вашу помощь очень много ..

>>data=pd.DataFrame(Data) 
>>for r in data.iterrows(): 
>> r[1].tolist() 

>>r[1] 
a   16593 
b   15 
c   179.069 
d   110000 
e   5906 
Name: 0, dtype: object 

>>r[1].tolist() 
[16593L, 15.0, 179.068851, 110000.0, 5906L] 

На самом деле я понял, что цифры, которые добавьте к L представляют собой целые числа, для поплавков он работает ..

+0

Каково ваше требование для формата выходной строки? Если вы хотите, чтобы запятая была разделена, просто используйте 'df.to_csv()'. 'L' означает' большое целое ' –

+0

Хорошо спасибо, просто понял, что L означает целое число. Я разбираю строки кадра данных, чтобы извлечь некоторые данные и сохранить их в разных словарях. Есть ли способ опустить «L»? –

ответ

0

Каждый столбец в DataFrame имеет определенный «тип», связанный с ним.

Обычно это означает, что они имеют тип «строка», «int» или «float».

Прямо сейчас ваш вызов .tolist() преобразует строку в список, но не обязательно изменяет тип всех значений в строке.

Когда вы вводите список в консоль, Python использует метод «repr», чтобы найти строковое представление списка. Это включает в себя скобки и вызов «repr» для каждого из элементов. Это немного отличается от того, что выставлять значение в строку, которая выполняется с помощью метода «str».

Вы можете проверить это сами:

# For regular ints, repr and str do the same thing 
a = 5 
str(a) #'5' 
repr(a) #'5' 

# The L means it's a *long*, basically an int with a higher max-value 
a = 5L 
str(a) #'5' 
repr(a) #'5L' 

* Обратите внимание, что это не так в Python 3 все Интс автоматически «длинные», в результате чего не L, как это было бы излишним.

Таким образом, в конце концов, если вы действительно хотите, чтобы преобразовать список различных типов (поплавка, INT, ул, в зависимости от каждого столбца) в строки, вы могли бы использовать что-то вроде этого:

my_list = [str(x) for x in my_list] 

Однако, если вы планируете выполнять некоторую обработку с использованием этих чисел, лучше просто оставить их в качестве своего числового типа, а не конвертировать туда и обратно в строку.