Удалить двойные кавычки и скобки из списка и записать в CSV-файл с помощью панд - PullRequest
0 голосов
/ 11 октября 2019

перепробовал так много способов, чтобы получить вывод

import pandas as pd

numbers= []
for i in range(100,5100,100):
    numbers.append((30,i))

df = pd.DataFrame(list(zip(*[numbers])))
df.to_csv('file.csv',header=False,index=False,index_label=None

вывод этой программы:

file.csv:

"(30, 100)"

"(30, 200)"

"(30, 300)"

"(30, 400)"

"(30, 500)"

"(30, 600)"

"(30, 700)"

но фактический вывод я хочу

file.csv:

30,100

30,200

30,300

30,400

30,500

30,600

Ответы [ 2 ]

1 голос
/ 11 октября 2019

Просто замените pd.DataFrame(zip[*numbers])' with 'pd.DataFrame(numbers)

import pandas as pd

numbers = []
for i in range(100, 5100, 100):
    numbers.append((30, i))

df = pd.DataFrame(numbers)
df.to_csv('file.csv', header=False, index=False, index_label=None)

Объяснение: DataFrame(list(zip(*[numbers]))) создаст один столбец данных с кортежами значений строк (30, 100), (30, 200), (30, 300),и т. д.

DataFrame(numbers) создаст двухкадровый фрейм данных, где в столбце 0 будут значения 30, 30, 30 и т. д., а в столбце 1 - значения 100, 200, 300 и т. д.

Просто сделайте print(df.head(20)), чтобы увидеть эффект.

Кстати, более питонский способ создания numbers заключается в понимании списка:

numbers = [(30, i) for i in range(100, 5100, 100)]

0 голосов
/ 11 октября 2019

Вам необходимо обновить свою функцию, как показано ниже:

import pandas as pd

numbers= []
for i in range(100,5100,100):
    numbers.append((30,i))
# zip is not required for numbers list.
df = pd.DataFrame(numbers)
df.to_csv('file.csv',header=False,index=False,index_label=None)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...