自动将数据框附加到 CSV 文件
Append dataframe to CSV file automatically
我有一个脚本可以获取一系列推文并将它们转换为数据框。我想使用 cron 每 2 小时执行一次 运行,并将结果附加到一个 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)
如果您的 df
对象存储了多个数据帧,我认为您需要使用 writer.writerows(df)
而不是 writer.writerow(df)
。请参考这个link。因此,更改您的代码如下应该对您有所帮助:
import csv
df
with open(r'name of csv', 'a') as f:
writer = csv.writer(f)
writer.writerows(df)
您可以让 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)
您使用了writerow
方法。那需要循环。
另外,既然你有一个数据框,你应该更喜欢它的 to_csv 方法
我有一个脚本可以获取一系列推文并将它们转换为数据框。我想使用 cron 每 2 小时执行一次 运行,并将结果附加到一个 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)
如果您的 df
对象存储了多个数据帧,我认为您需要使用 writer.writerows(df)
而不是 writer.writerow(df)
。请参考这个link。因此,更改您的代码如下应该对您有所帮助:
import csv
df
with open(r'name of csv', 'a') as f:
writer = csv.writer(f)
writer.writerows(df)
您可以让 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)
您使用了writerow
方法。那需要循环。
另外,既然你有一个数据框,你应该更喜欢它的 to_csv 方法