簡體   English   中英

當日期和時間在單獨的列中時,將數據從csv讀入pandas

[英]Reading data from csv into pandas when date and time are in separate columns

我查看了這個問題的答案: 在Python中使用pandas將YYYYMMDD和HH放在不同的列中時解析日期 ,但它似乎對我不起作用,這讓我覺得我做了一些微妙的錯誤。

我有.csv文件中的數據,我正在嘗試使用pandas read_csv函數讀取。 日期和時間分為兩列,但我想將它們合並到一個包含datetime對象的列“Datetime”中。 csv看起來像這樣:

    Note about the data
    blank line
    Site Id,Date,Time,WTEQ.I-1...
    2069, 2008-01-19, 06:00, -99.9...
    2069, 2008-01-19, 07:00, -99.9...
    ...

我正在嘗試使用以下代碼行閱讀它:

   read_csv("2069_ALL_YEAR=2008.csv", skiprows=2, parse_dates={"Datetime" : [1,2]}, date_parser=True, na_values=["-99.9"])

但是,當我把它寫回到csv時,它看起來完全一樣(除了-99.9s被改為NA,就像我用na_values參數指定的那樣)。 日期和時間分為兩列。 據我了解,這應該是創建一個名為Datetime的新列,它由第1列和第2列組成,使用date_parser進行解析。 我也嘗試過使用parse_dates = {“Datetime”:[“Date”,“Time”]},parse_dates = [[1,2]]和parse_dates = [[“Date”,“Time”]]。 我也嘗試使用date_parser = parse,其中parse定義為:

    parse = lambda x: datetime.strptime(x, '%Y-%m-%d %H:%M')

這些都沒有造成一點點差別,這使我懷疑存在一些更深層次的問題。 任何洞察它可能是什么?

您應該更新您的熊貓,我推薦最新的穩定版本以獲取最新功能和錯誤修復。

此特定功能在0.8.0引入 ,適用於pandas版本0.11:

In [11]: read_csv("2069_ALL_YEAR=2008.csv", skiprows=2, parse_dates={"Datetime" : [1,2]}, na_values=["-99.9"])
Out[11]:
             Datetime  Site Id  WTEQ.I-1
0 2008-01-19 06:00:00     2069       NaN
1 2008-01-19 07:00:00     2069       NaN

沒有date_parser=True (因為這應該是一個解析函數,請參閱docstring )。

請注意,在提供的示例中,生成的“Datetime”列是其自己的Series,而不是DataFrame的索引值。 如果您希望將datetime值作為索引列而不是整數值,則傳遞指定所需列的index_col參數,在本例中為0,因為生成的“Datetime”列是第一個。

In [11]: read_csv("2069_ALL_YEAR=2008.csv", skiprows=2, parse_dates={"Datetime" : [1,2]}, index_col=0, na_values=["-99.9"])

暫無
暫無

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

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