簡體   English   中英

Python / Pandas —將日期和小時列轉換為小時索引

[英]Python/Pandas — convert day and hour columns into index of hour

我有一個看起來像這樣的數據框:

df
         Date    Hr    CO2_resp
0      5/1/02   600    0.000889
1      5/2/02   600    0.000984
2      5/4/02   900    0.000912

我將如何創建一個列Ind來表示自午夜5/1/02以來經過的小時數的索引? 這樣,該列將顯示為

df
         Date    Hr   Ind      CO2_resp
0      5/1/02   600     6      0.000889
1      5/2/02   600    30      0.000984
2      5/4/02   800    80      0.000912

謝謝。

假設Date是一個字符串,並且Hr是一個整數,則可以應用一個函數來解析Date ,從timedelta帶有您的參考日期的小時數(天* 24),然后添加小時數。

像這樣-

df.apply(lambda x: 
     (datetime.datetime.strptime(x['Date'], '%m/%d/%y')
      - datetime.datetime.strptime('5/1/02', '%m/%d/%y')).days
     * 24 + x['Hr'] / 100,
     axis=1)

您可以將to_datetimeto_timedelta to_datetime使用。 然后通過np.timedelta64(1, 'h')timedelta轉換為hours ,如果輸出的type始終是int ,則通過astype

#convert column Date to datetime
df['Date'] = pd.to_datetime(df.Date)

df['Ind'] = ((df.Date 
              - pd.to_datetime('2002-05-01') 
              + pd.to_timedelta(df.Hr / 100, unit='h')) / np.timedelta64(1, 'h')).astype(int)
print (df)
        Date   Hr  CO2_resp  ind
0 2002-05-01  600  0.000889    6
1 2002-05-02  600  0.000984   30
2 2002-05-04  900  0.000912   81

如果不除以100Hr ,則輸出將不同:

df['Ind'] = ((df.Date 
              - pd.to_datetime('2002-05-01') 
              + pd.to_timedelta(df.Hr,unit='h')) / np.timedelta64(1, 'h')).astype(int)
print (df)
        Date   Hr  CO2_resp  Ind
0 2002-05-01  600  0.000889  600
1 2002-05-02  600  0.000984  624
2 2002-05-04  900  0.000912  972

暫無
暫無

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

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