簡體   English   中英

使用 pandas to_csv 時刪除標題中的前導逗號

[英]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 = 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

只需為您的索引設置一個名稱: df.index.name = 'blah' 此名稱將作為名字出現在標題中。

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

但是,如果(根據您的評論)您希望在標題中有 3 個以逗號分隔的名稱,而在 csv 的行中有 4 個以逗號分隔的值,則您必須手工制作它。 但是它不符合任何 csv 標准格式。

或者,嘗試重置索引,使其成為數據框中的一列,名為index 這也適用於多個索引。

df = df.reset_index()
df.to_csv('output.csv', index = False)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM