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. Это проблема с моим кодом или чем-то еще?
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
.