Pandas 追加数据到 CSV 中

Python Pandas 允许我们有效地操作和管理数据。我们可以创建和管理 DataFrames,并对其进行各种操作。它还允许我们读取外部的 CSV 或 excel 文件,导入 DataFrames,对它们进行操作,并将它们保存回来。在保存数据的过程中,有一个有趣的功能是使用参数 a 的追加模式,它可以用来将数据追加到已经存在的 CSV 文件中。

本文将介绍如何使用 Pandas 将数据追加到 CSV 中。

import pandas as pd

df = pd.DataFrame([[6,7,8],
                   [9,12,14],
                   [8,10,6]], columns = ['a','b','c'])

print(df)

df.to_csv(r"C:\Test\data.csv", index = False)

df2 = pd.DataFrame([[4,1,3],
                   [6,7,2],
                   [5,9,4]], columns = ['a','b','c'])

print(df2)

df2.to_csv(r"C:\Test\data.csv", mode = 'a', header = False, index = False)

输出:

   a   b   c
0  6   7   8
1  9  12  14
2  8  10   6
   a  b  c
0  4  1  3
1  6  7  2
2  5  9  4

pandas append to csv.png

保存的 CSV 文件将同时具有两个 DataFrames,并将 df2 的数据追加到原始文件中。

我们还可以在这段代码中增加另一个功能。只需几行代码,我们就可以确保 to_csv() 函数在文件不存在的情况下创建一个文件,在文件已经存在的情况下跳过头文件。我们将使用 with 语句进行异常处理,使用 open() 打开一个文件。

import pandas as pd

df = pd.DataFrame([[6,7,8],
                   [9,12,14],
                   [8,10,6]], columns = ['a','b','c'])

print(df)

df.to_csv(r"C:\Test\data.csv", index = False)

df2 = pd.DataFrame([[4,1,3],
                   [6,7,2],
                   [5,9,4]], columns = ['a','b','c'])

print(df2)

with open(r"C:\Test\data.csv", mode = 'a') as f:
    df2.to_csv(f, header=f.tell()==0,index = False)

输出:

   a   b   c
0  6   7   8
1  9  12  14
2  8  10   6
   a  b  c
0  4  1  3
1  6  7  2
2  5  9  4

文件对象的 tell() 方法返回当前光标位置。因此,如果文件为空或不存在,f.tell==0 为 True,这样 header 就被设置为 True;否则 header 就被设置为 False