使用 pandas to_csv 时删除 header 中的前导逗号
Remove leading comma in header when using pandas to_csv
默认情况下 to_csv 会像
一样写入 CSV
,a,b,c
0,0.0,0.0,0.0
1,0.0,0.0,0.0
2,0.0,0.0,0.0
但我希望它这样写:
a,b,c
0,0.0,0.0,0.0
1,0.0,0.0,0.0
2,0.0,0.0,0.0
如何实现?我无法设置 index=False
因为我想保留索引。我只想删除前导逗号。
df = pd.DataFrame(np.zeros((3,3)), columns = ['a','b','c'])
df.to_csv("test.csv") # this results in the first example above.
只需为您的索引设置一个名称:df.index.name = 'blah'
。此姓名将作为名字出现在 headers.
中
import numpy as np
import pandas as pd
df = pd.DataFrame(np.zeros((3,3)), columns = ['a','b','c'])
df.index.name = 'my_index'
print(df.to_csv())
产量
my_index,a,b,c
0,0.0,0.0,0.0
1,0.0,0.0,0.0
2,0.0,0.0,0.0
但是,如果(根据您的评论)您希望 headers 中有 3 个 coma-separated 名称,而 csv 行中有 4 个 coma-separated 值,则您必须手工制作。但是它不符合任何 csv 标准格式。
或者,尝试重置索引,使其成为数据框中的一列,名为 index。这也适用于多个索引。
df = df.reset_index()
df.to_csv('output.csv', index = False)
可以先只写没有索引的列,然后在追加模式下写没有 header 的数据:
df = pd.DataFrame(np.zeros((3,3)), columns = ['a','b','c'], index=list('XYZ'))
pd.DataFrame(columns=df.columns).to_csv("test.csv", index=False)
#alternative for empty df
#df.iloc[:0].to_csv("test.csv", index=False)
df.to_csv("test.csv", header=None, mode='a')
df = pd.read_csv("test.csv")
print (df)
a b c
X 0.0 0.0 0.0
Y 0.0 0.0 0.0
Z 0.0 0.0 0.0
默认情况下 to_csv 会像
一样写入 CSV,a,b,c
0,0.0,0.0,0.0
1,0.0,0.0,0.0
2,0.0,0.0,0.0
但我希望它这样写:
a,b,c
0,0.0,0.0,0.0
1,0.0,0.0,0.0
2,0.0,0.0,0.0
如何实现?我无法设置 index=False
因为我想保留索引。我只想删除前导逗号。
df = pd.DataFrame(np.zeros((3,3)), columns = ['a','b','c'])
df.to_csv("test.csv") # this results in the first example above.
只需为您的索引设置一个名称:df.index.name = 'blah'
。此姓名将作为名字出现在 headers.
import numpy as np
import pandas as pd
df = pd.DataFrame(np.zeros((3,3)), columns = ['a','b','c'])
df.index.name = 'my_index'
print(df.to_csv())
产量
my_index,a,b,c
0,0.0,0.0,0.0
1,0.0,0.0,0.0
2,0.0,0.0,0.0
但是,如果(根据您的评论)您希望 headers 中有 3 个 coma-separated 名称,而 csv 行中有 4 个 coma-separated 值,则您必须手工制作。但是它不符合任何 csv 标准格式。
或者,尝试重置索引,使其成为数据框中的一列,名为 index。这也适用于多个索引。
df = df.reset_index()
df.to_csv('output.csv', index = False)
可以先只写没有索引的列,然后在追加模式下写没有 header 的数据:
df = pd.DataFrame(np.zeros((3,3)), columns = ['a','b','c'], index=list('XYZ'))
pd.DataFrame(columns=df.columns).to_csv("test.csv", index=False)
#alternative for empty df
#df.iloc[:0].to_csv("test.csv", index=False)
df.to_csv("test.csv", header=None, mode='a')
df = pd.read_csv("test.csv")
print (df)
a b c
X 0.0 0.0 0.0
Y 0.0 0.0 0.0
Z 0.0 0.0 0.0