2017-02-02 6 views
2

У меня есть dataframe df1 и каждую строку столбца A содержит список номеров, например так:Как сохранить списки внутри строк с панд

import pandas as pd 
dic = {'A':[[0,2,5,464,64789,131,13],[1,454,45166,78],[6,8],[1],[7,8789,45,65]]} 
df1 = pd.DataFrame(dic) 

Моя цель состоит, чтобы сохранить каждую строку в текстовом файле так что он отображает для каждой строки содержимое списка. До сих пор я был в состоянии достигнуть его, используя следующую строку кода:

df1.to_csv('../ndb/_fede.txt',index=False, header=None) 

Однако выходной файл имеет некоторые кавычки и скобки, которые мне не нужны.

# What I get      | # What I WANT! 
"[0, 2, 5, 464, 64789, 131, 13]" | 0,2,5,464,64789,131,13 
"[1, 454, 45166, 78]"    | 1,454,45166,78 
"[6, 8]"       | 6,8 
"[1]"        | 1 
"[7, 8789, 45, 65]"    | 7,8789,45,65 

В принципе, я хочу, чтобы все номера каждого списка были разделены запятой и никакими другими символами.

Примечание: вы также можете взять df1, преобразованный в массивы, если необходимо.

ответ

2

Решения проще отливает str и удалить [] по split:

df1.A = df1.A.astype(str).str.strip('[]') 
print (df1) 
           A 
0 0, 2, 5, 464, 64789, 131, 13 
1    1, 454, 45166, 78 
2       6, 8 
3        1 
4    7, 8789, 45, 65 

И если нужно удалить пробельные:

df1.A = df1.A.astype(str).str.strip('[]').str.replace('\s+', '') 
print (df1) 
         A 
0 0,2,5,464,64789,131,13 
1   1,454,45166,78 
2      6,8 
3      1 
4   7,8789,45,65 

Если необходимо сохранить только один столбец Простейший является изменение по умолчанию разделителя , , поскольку разделитель , и значения в колонке ,, поэтому " добавлены:

print (df1.to_csv(index=False, header=None, sep="|")) 
0,2,5,464,64789,131,13 
1,454,45166,78 
6,8 
1 
7,8789,45,65 
+0

Мне нравится это, но когда я сохранить его я все еще получаю Кавычки –

+0

Если это только один столбец, попробовать, как onother сен '' - 'df1.to_csv (» ../ NDB/_fede.txt ', index = False, header = None, sep =' | ') ' – jezrael

1
df1.A.apply(
    lambda x: ','.join(pd.Series(x).astype(str)) 
).to_frame().to_csv('../ndb/_fede.txt', index=False, sep='|') 

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

  • Нет связанных вопросов^_^