這不會在您的示例中產生確切的輸出,但它很接近。您可以使用多索引列來存儲第二集(單位)與列標籤:
>>> import pandas as pd
>>> columns = pd.MultiIndex.from_tuples(
... zip(['date', 'x', 'y', 'z'],
... ['(yyyy-mm-dd)', '(s)', '(m)', '(kg)']))
>>> data = [['2014-03-12', 1, 2, 3],
... ['2014-03-13', 4, 5, 6]]
>>> df = pd.DataFrame(data, columns=columns)
>>> df
date x y z
(yyyy-mm-dd) (s) (m) (kg)
0 2014-03-12 1 2 3
1 2014-03-13 4 5 6
存儲第二集這樣可以讓你的欄目,以保持正確的類型(例如,列x
應該是一個整型):
>>> df.dtypes
date (yyyy-mm-dd) object
x (s) int64
y (m) int64
z (kg) int64
dtype: object
如果存儲了第二集爲一個行的DataFrame
,你列dtypes
將成爲object
,你可能不希望。
編寫的CSV DataFrame
格式產生非常相似,你的榜樣東西:
>>> df.to_csv('out.csv', index=False)
>>> !cat out.csv
date,x,y,z
(yyyy-mm-dd),(s),(m),(kg)
,,,
2014-03-12,1,2,3
2014-03-13,4,5,6
唯一不同的是逗號的額外線,這是大熊貓是如何從數據的實際行分隔多行標題。這允許CSV文件要回讀成等效DataFrame
:
>>> df2 = pd.read_csv('out.csv', header=[0, 1])
>>> df2
date x y z
(yyyy-mm-dd) (s) (m) (kg)
0 2014-03-12 1 2 3
1 2014-03-13 4 5 6
注:我發現有很多分散在整個this SO question此信息。
也許你可以使用普通的Python輸出(file.write())只寫的第一行,然後寫與單元線下,所述報頭中的數據幀。 (不知道這是否正常工作或沒有,但也許一個辦法做到這一點) –
如何是從一開始插入新行與「第二」頭有什麼不同? – Ben
@Ben:我怎麼能用索引字符串做這件事(記住我有一個日期時間索引)?我試着用'df.loc()',但顯然我得到的語法錯誤(我總是得到錯誤'ValueError異常:不安全的附加到類型DatetimeIndex指數用鑰匙YYYY-MM-dd')。 –