将 Pandas 转换为不带索引的 CSV

Manav Narula 2020年12月19日
将 Pandas 转换为不带索引的 CSV

如你所知,索引可以被认为是一个参考点,用于存储和访问 DataFrame 中的记录。它们对每一行都是唯一的,通常范围从 0 到 DataFrame 的最后一行,但我们也可以有序列号、日期和其他唯一的列作为 DataFrame 的索引。

但有时在导出或读取文件时,用户可能不需要这个额外的索引列。用下面的 DataFrame 会更清楚地说明这个问题。

import pandas as pd

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

print(df)

输出:

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

正如你所看到的,我们在 DataFrame 中增加了一个额外的索引,用户在将其保存到文件时可以避免这个索引。如果我们想把这个 DataFrame 转换成一个没有索引列的 CSV 文件,我们可以通过在 to_csv() 函数中把 index 设置为 False 来实现。

示例代码。

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("data2.csv", index = False)

输出:

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

从输出中可以看出,DataFrame 确实有一个索引,但由于我们将 index 参数设置为 False,所以导出的 CSV 文件不会有额外的一列。

将 Pandas 转换为无索引的 CSV 文件

如果我们导出一个带有额外索引列的文件(没有将 index 参数设置为 False),然后尝试读取它,我们将得到一个奇怪的额外列。

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("data2.csv")

df_new = pd.read_csv("data2.csv")

print(df_new)

输出:

   a   b   c
0  6   7   8
1  9  12  14
2  8  10   6
   Unnamed: 0  a   b   c
0           0  6   7   8
1           1  9  12  14
2           2  8  10   6

正如你所看到的,df_new DataFrame 有一个额外的 Unnamed 列。

Author: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

相关文章 - Pandas DataFrame