Использование pandas dataframe для записи значений в новую ошибку csv-файла

1
import pandas as pd
import csv

basefileread = pd.read_csv('50.csv', encoding='latin-1')
basefilevalue = basefileread.loc[basefileread['Customer'].str.contains("Lam Dep", na=False), 'Jul-18\nQty']

basefilevalue.to_csv('data.csv', sep='\t')

with open('data.csv', 'w') as f:
    writer = csv.writer(f, delimiter=',')
    writer.writerows(basefilevalue)

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

csv.Error: iterable expected, not float

Ответ, приведенный ниже, помогает запустить мой код без ошибок, однако никакие данные не печатаются в моем файле csv. Это проблема с моим кодом или чем-то еще?

Теги:
pandas
csv
series

1 ответ

1
Лучший ответ

csv.writer.writerows принимает итерабельность итераций, в то время как writerow принимает итерабельность.

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

list_of_lists = [[i] for i in basefilevalue.values]
writer.writerows(list_of_lists)

Это будет записывать каждый элемент basefilevalue в отдельной строке.

Однако непонятно, почему вы прибегаете к модулю csv когда, как и в вашем существующем коде, вы можете использовать pd.Series.to_csv.

  • 0
    спасибо, это помогло моему коду работать без ошибок. Однако я все еще не уверен, почему данные не печатаются в мой CSV-файл, и не уверен, связано ли это с моим кодом, или я не выполняю команду в командной строке правильно.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню