Автоматическое добавление фрейма данных в файл CSV

#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