不好意思,我是一个新手。我正在将几列数据写入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顶部只有一组标题。这可能吗?
谢谢。
答案 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.
这是您要寻找的吗?