#python #pandas #csv #twitter
#python #pandas #csv #Twitter
Вопрос:
У меня есть скрипт, который получает диапазон твитов и преобразует их в фрейм данных. Я хотел бы запускать это каждые 2 часа, используя cron, и добавлять результаты в один CSV. Однако у меня возникли проблемы с добавлением части. Это код, который я использовал, чтобы попробовать это:
import csv
df
with open(r'name of csv', 'a') as f:
writer = csv.writer(f)
writer.writerow(df)
Добавляется только первая строка фрейма данных. Кто-нибудь знает, как это решить?
Редактировать: Спасибо всем, я решил, как это сделать!
Это был мой код:
df.to_csv('name', mode = 'a', header = False)
Комментарии:
1. Непроверено… если у вас есть фрейм данных, вызываемый
df
…, То вместо того, Чтобы открывать файл вручную и т. Д., Сделайте …df.to_csv('name of csv file', mode='a', header=None)
…2. Спасибо, это сработало!
Ответ №1:
Вы можете позволить pandas добавлять к вашему CSV.
from io import StringIO
import pandas as pd
# create our CSV file
path = 'abc.csv'
old_data = '''
a,b,c
1.1,1.2,1.5
2.1,2.2,2.5
'''
b = StringIO(old_data)
df = pd.read_csv(b)
df.to_csv(path, index=False)
# get a DataFrame
d = {
'a': [0.9, 1.9, 2.9, 3.9],
'b': [0.1, 1.2, 2.3, 3.4],
'c': [10, 11, 12, 13],
}
df = pd.DataFrame(d)
# append DataFrame to our CSV file
with open(path, 'a') as f:
# skip headers
df.to_csv(f, index=False, header=False)
# show results
df = pd.read_csv(path)
print(df)
Ответ №2:
Я думаю, вам нужно использовать writer.writerows(df)
, а не writer.writerow(df)
если ваш df
объект хранит более одного фрейма данных. Пожалуйста, обратитесь к этой ссылке. Поэтому изменение вашего кода следующим образом должно помочь вам:
import csv
df
with open(r'name of csv', 'a') as f:
writer = csv.writer(f)
writer.writerows(df)
Ответ №3:
Вы использовали этот writerow
метод. Это должно быть в цикле.
Кроме того, поскольку у вас есть фрейм данных, вам, вероятно, следует предпочесть его метод to_csv