将行追加到CSV文件

时间:2019-10-06 01:23:41

标签: python pandas csv

不好意思,我是一个新手。我正在将几列数据写入CSV文件,每次运行脚本向其中写入新数据时,我都希望在其中维护标题。

每次运行脚本时,我都已成功将数据追加到CSV,但是我无法获取要写入新行的数据。它尝试在同一行上扩展数据。我需要换行。

df = pd.DataFrame([[date, sales_sum, qty_sum, orders_sum, ship_sum]], columns=['Date', 'Sales', 'Quantity', 'Orders', 'Shipping'])
df.to_csv(r'/profit.csv', header=None, index=None, sep=',', mode='a')

我希望标题位于“日期,销售,数量,订单,运输”的第一行

第二行将显示实际值。

当再次运行脚本时,我希望第三行仅附加第二天的值。传递标头时,似乎想再次写标头,然后在其下再次写数据。我更喜欢CSV顶部只有一组标题。这可能吗?

谢谢。

2 个答案:

答案 0 :(得分:0)

您可以使用所需的柱头定义主数据框。 然后每天创建一个仅包含新行的数据框,然后将其附加到主行。 像这样:

Main_df = pd.DataFrame(values, columns)
New_rows = pd.DataFrame(new_values, columns)
Main_df = Main_df.append(New_rows, ignore_index=True)

例如:

df = pd.DataFrame([[1, 2], [3, 4]], columns=list('AB'))
print(df)
#   A  B
#0  1  2
#1  3  4

df2 = pd.DataFrame([[5, 6], [7, 8]], columns=list('AB'))

df = df.append(df2, ignore_index=True)
print(df)
#   A  B
#0  1  2
#1  3  4
#2  5  6
#3  7  8

答案 1 :(得分:0)

不确定我是否完全理解您要做什么,但是检查文档似乎您可以将其标题选项设置为false:

https [://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_csv.html] [1]

Header : bool or list of str, default True
Write out the column names. If a list of strings is given it is assumed to be 
aliases for the column names.

Changed in version 0.24.0: Previously defaulted to False for Series.

这是您要寻找的吗?