2017-04-24 89 views
1

我期待在這裏發表的文本文件,因爲我無法找到大氣二氧化碳濃度的歷史更清潔的表的任何地方:將此數據讀入熊貓數據框的優雅方法?

https://data.giss.nasa.gov/modelforce/ghgases/Fig1A.ext.txt

我試圖找出如何將這個文件讀入熊貓,而不必先執行尷尬的文本編輯器操作。有沒有辦法做到這一點?

我在編輯器中做的方式是首先從文本文件中刪除所有的單詞,然後使用read_table,但是我必須提供一些指令來解釋數據的年份, ppm,year,ppm等。我不知道該怎麼做,也不禁想知道是否有一種聰明的方式來用python自動識別冒犯的單詞並忽略它們?

+1

最優雅是見仁見智。 IMO最優雅的方式是創建一個新的文本文件。 – piRSquared

+0

請問你用什麼編輯器來包裝重複的(年,ppm)組的列?謝謝! – theverge

回答

1

如果使用pandas.read_fwf,那是相當直截了當:

代碼:

df = pd.read_fwf(
    'https://data.giss.nasa.gov/modelforce/ghgases/Fig1A.ext.txt', 
    header=None, skiprows=5, nrows=50, 
    colspecs=[(8, 12), (14, 20), (28, 32), (34, 40), 
       (48, 52), (54, 60), (68, 72), (74, 80)]) 

years = np.concatenate([df[i].values for i in range(0, 8, 2)]) 
temps = np.concatenate([df[i].values for i in range(1, 8, 2)]) 
df = pd.DataFrame(temps, index=years, columns=['temps']).dropna() 
print(df) 

結果:

  temps 
1850.0 285.20 
1851.0 285.10 
1852.0 285.00 
1853.0 285.00 
1854.0 284.90 
...  ... 
2007.0 383.37 
2008.0 385.46 
2009.0 386.95 
2010.0 389.21 
2011.0 391.15 

[162 rows x 1 columns] 
+0

不錯,謝謝! – theverge

+0

@theverge,你非常歡迎。然而,在所以最好的方式表示感謝是upvote *任何*您認爲有用的問題或答案。在你的問題中,如果其中一個答案非常適合你的問題,你可以將其標記爲接受的答案。有關準則,請參閱[幫助中心](http://stackoverflow.com/help/someone-answers)。 –

+0

謝謝。由於奇怪的SO系統,我不能提出答案,因爲在這個系統中,人們必須首先證明其中一個值得優先考慮。如果我接受你的答案,並且有更簡單的答案出現,我是否仍然能夠接受這個答案? – theverge