为什么还有一行名为' 0'在read_csv之后?
在下面的代码中,我将df1保存到csv文件并将其读回。但是,还有一行名为' 0'。我怎么能避免呢?
d1 = {'a' : 1, 'b' : 2, 'c' : 3}
df1=pd.Series(d1)
print('\ndf1:'); print(df1)
> df1:
> a 1
> b 2
> c 3
> dtype: int64
df1.to_csv("df1.csv")
df1=pd.read_csv("df1.csv", index_col=0, header=None)
print('\ndf1:'); print(df1)
> df1:
> 1
> 0 <<<<---- ????
> a 1
> b 2
> c 3
答案 0 :(得分:1)
这不是虚拟行 - 这是索引列的名称。
您可以通过运行来检查它:
> df.index.name
0
您也可以通过设置来更改它:
> df.index.name = "my_index"
1
my_index
a 1
b 2
c 3
答案 1 :(得分:1)
避免它的一种方法是创建一个DataFrame(如您的变量名所示)而不是系列(您有atm)。
import pandas as pd
d1 = {'a' : 1, 'b' : 2, 'c' : 3}
df1 = pd.Series(d1).to_frame() # Use to_frame() here
df1.to_csv("df1.csv")
df1 = pd.read_csv("df1.csv", index_col=0)
print(df1)给出:
0
a 1
b 2
c 3
另一种解决方案是在导入时实际指定名称。 如果您选择此解决方案,我会在您创建可读性系列时将df1重命名为s1。
df1 = pd.read_csv("df1.csv", names=['index','values'], index_col='index')
你得到:
values
index
a 1
b 2
c 3
完整示例:
d1 = {'a' : 1, 'b' : 2, 'c' : 3}
s1 = pd.Series(d1)
print('s1:\n{}\n'.format(s1))
s1.to_csv("df1.csv")
df1 = pd.read_csv("df1.csv", names=['index','values'], index_col='index')
print('df1:\n{}\n'.format(df1))