<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://onnocenter.or.id/wiki/index.php?action=history&amp;feed=atom&amp;title=Panda%3A_datetime_cheat_sheet</id>
	<title>Panda: datetime cheat sheet - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://onnocenter.or.id/wiki/index.php?action=history&amp;feed=atom&amp;title=Panda%3A_datetime_cheat_sheet"/>
	<link rel="alternate" type="text/html" href="https://onnocenter.or.id/wiki/index.php?title=Panda:_datetime_cheat_sheet&amp;action=history"/>
	<updated>2026-04-16T04:16:19Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.4</generator>
	<entry>
		<id>https://onnocenter.or.id/wiki/index.php?title=Panda:_datetime_cheat_sheet&amp;diff=56656&amp;oldid=prev</id>
		<title>Onnowpurbo: Created page with &quot;Sumber: https://dzone.com/articles/dates-in-pandas-cheatsheet     Dates in Pandas Cheatsheet  Check out a large collection of not-so-sloppy snippets for doing scientific compu...&quot;</title>
		<link rel="alternate" type="text/html" href="https://onnocenter.or.id/wiki/index.php?title=Panda:_datetime_cheat_sheet&amp;diff=56656&amp;oldid=prev"/>
		<updated>2019-08-08T03:40:17Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;Sumber: https://dzone.com/articles/dates-in-pandas-cheatsheet     Dates in Pandas Cheatsheet  Check out a large collection of not-so-sloppy snippets for doing scientific compu...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Sumber: https://dzone.com/articles/dates-in-pandas-cheatsheet&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dates in Pandas Cheatsheet&lt;br /&gt;
&lt;br /&gt;
Check out a large collection of not-so-sloppy snippets for doing scientific computing and data visualization in Python with pandas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Join the DZone community and get the full member experience. Join For Free&lt;br /&gt;
Lately, I've been working a lot with dates in Pandas, so I decided to make this little cheatsheet with the commands I use the most.&lt;br /&gt;
Importing a CSV using a custom function to parse dates:&lt;br /&gt;
&lt;br /&gt;
 import pandas as pd&lt;br /&gt;
&lt;br /&gt;
 def parse_month(month):&lt;br /&gt;
     &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
     Converts a string from the format M in datetime format.&lt;br /&gt;
     Example: parse_month(&amp;quot;2007M02&amp;quot;) returns datetime(2007, 2, 1)&lt;br /&gt;
     &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
     return pd.datetime(int(month[:4]), int(month[-2:]), 1)&lt;br /&gt;
&lt;br /&gt;
 temperature = pd.read_csv('TempUSA.csv', parse_dates=['Date'], &lt;br /&gt;
                           date_parser=parse_month, &lt;br /&gt;
                           index_col=['Date'], # will become an index&lt;br /&gt;
                           # use a subset of the columns&lt;br /&gt;
                           usecols=['Date', &lt;br /&gt;
                                    'LosAngelesMax', 'LosAngelesMin'])&lt;br /&gt;
&lt;br /&gt;
 print temperature&lt;br /&gt;
&lt;br /&gt;
             LosAngelesMax  LosAngelesMin&lt;br /&gt;
 Date                                    &lt;br /&gt;
 2000-01-01           19.6           10.0&lt;br /&gt;
 2000-02-01           18.9           10.1&lt;br /&gt;
 2000-03-01           18.6           10.1&lt;br /&gt;
 2000-04-01           20.2           12.5&lt;br /&gt;
 2000-05-01           21.9           14.2&lt;br /&gt;
&lt;br /&gt;
Format the dates in a chart:&lt;br /&gt;
&lt;br /&gt;
 import matplotlib.pyplot as plt&lt;br /&gt;
 import matplotlib.dates as mdates&lt;br /&gt;
&lt;br /&gt;
 plt.plot(temperature['LosAngelesMax'])&lt;br /&gt;
 plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m'))&lt;br /&gt;
 plt.show()&lt;br /&gt;
&lt;br /&gt;
Here's the reference of the date format directives. ISO compliant format: %Y-%m-%dT%H:%M:%S.&lt;br /&gt;
Group the DataFrame by month:&lt;br /&gt;
&lt;br /&gt;
 print temperature.groupby([temperature.index.month]).mean()&lt;br /&gt;
&lt;br /&gt;
       LosAngelesMax  LosAngelesMin&lt;br /&gt;
 Date                              &lt;br /&gt;
 1         20.092308       8.992308&lt;br /&gt;
 2         19.223077       9.276923&lt;br /&gt;
 3         19.253846      10.492308&lt;br /&gt;
 4         19.992308      11.461538&lt;br /&gt;
 5         21.076923      13.761538&lt;br /&gt;
 6         22.123077      15.800000&lt;br /&gt;
 7         23.892308      17.315385&lt;br /&gt;
 8         24.246154      17.530769&lt;br /&gt;
 9         24.384615      16.846154&lt;br /&gt;
 10        23.330769      14.630769&lt;br /&gt;
 11        21.950000      11.241667&lt;br /&gt;
 12        19.241667       8.683333&lt;br /&gt;
&lt;br /&gt;
The resulting DataFrame is indexed by month.&lt;br /&gt;
&lt;br /&gt;
Merging two DataFrames indexed with timestamps that don't match exactly:&lt;br /&gt;
&lt;br /&gt;
 date_range_a = pd.date_range('2007-01-01 01:00', &lt;br /&gt;
                             '2007-01-01 3:00', freq='1h')&lt;br /&gt;
 date_range_b = date_range_a + pd.Timedelta(10, 'm')&lt;br /&gt;
&lt;br /&gt;
 df_a = pd.DataFrame(np.arange(len(date_range_a)), &lt;br /&gt;
                     columns=['a'], index=date_range_a)&lt;br /&gt;
 df_b = pd.DataFrame(['x', 'y', 'z'], &lt;br /&gt;
                     columns=['b'], index=date_range_b)&lt;br /&gt;
 print 'left DataFrame'&lt;br /&gt;
 print df_a&lt;br /&gt;
 print '\nright DataFrame'&lt;br /&gt;
 print df_b&lt;br /&gt;
 print '\nmerge_AsOf result'&lt;br /&gt;
 print pd.merge_asof(df_a, df_b, direction='nearest', &lt;br /&gt;
                     left_index=True, right_index=True)&lt;br /&gt;
&lt;br /&gt;
 left DataFrame&lt;br /&gt;
                      a&lt;br /&gt;
 2007-01-01 01:00:00  0&lt;br /&gt;
 2007-01-01 02:00:00  1&lt;br /&gt;
 2007-01-01 03:00:00  2&lt;br /&gt;
 right DataFrame&lt;br /&gt;
                     b&lt;br /&gt;
 2007-01-01 01:10:00  x&lt;br /&gt;
 2007-01-01 02:10:00  y&lt;br /&gt;
 2007-01-01 03:10:00  z&lt;br /&gt;
&lt;br /&gt;
 merge_AsOf result&lt;br /&gt;
                      a  b&lt;br /&gt;
 2007-01-01 01:00:00  0  x&lt;br /&gt;
 2007-01-01 02:00:00  1  y&lt;br /&gt;
 2007-01-01 03:00:00  2  z&lt;br /&gt;
&lt;br /&gt;
The DataFrames have been aligned according to the index on the left.&lt;br /&gt;
Aligning two DataFrames:&lt;br /&gt;
&lt;br /&gt;
 aligned = df_a.align(df_b)&lt;br /&gt;
 print 'left aligned'&lt;br /&gt;
 print aligned[0]&lt;br /&gt;
 print '\nright aligned'&lt;br /&gt;
 print aligned[1]&lt;br /&gt;
 print '\ncombination'&lt;br /&gt;
 aligned[0]['b'] = aligned[1]['b']&lt;br /&gt;
 print aligned[0]&lt;br /&gt;
&lt;br /&gt;
 left aligned&lt;br /&gt;
                        a   b&lt;br /&gt;
 2007-01-01 01:00:00  0.0 NaN&lt;br /&gt;
 2007-01-01 01:10:00  NaN NaN&lt;br /&gt;
 2007-01-01 02:00:00  1.0 NaN&lt;br /&gt;
 2007-01-01 02:10:00  NaN NaN&lt;br /&gt;
 2007-01-01 03:00:00  2.0 NaN&lt;br /&gt;
 2007-01-01 03:10:00  NaN NaN&lt;br /&gt;
&lt;br /&gt;
 right aligned&lt;br /&gt;
                       a    b&lt;br /&gt;
 2007-01-01 01:00:00 NaN  NaN&lt;br /&gt;
 2007-01-01 01:10:00 NaN    x&lt;br /&gt;
 2007-01-01 02:00:00 NaN  NaN&lt;br /&gt;
 2007-01-01 02:10:00 NaN    y&lt;br /&gt;
 2007-01-01 03:00:00 NaN  NaN&lt;br /&gt;
 2007-01-01 03:10:00 NaN    z&lt;br /&gt;
&lt;br /&gt;
 combination&lt;br /&gt;
                        a    b&lt;br /&gt;
 2007-01-01 01:00:00  0.0  NaN&lt;br /&gt;
 2007-01-01 01:10:00  NaN    x&lt;br /&gt;
 2007-01-01 02:00:00  1.0  NaN&lt;br /&gt;
 2007-01-01 02:10:00  NaN    y&lt;br /&gt;
 2007-01-01 03:00:00  2.0  NaN&lt;br /&gt;
 2007-01-01 03:10:00  NaN    z&lt;br /&gt;
&lt;br /&gt;
The timestamps are now aligned according to both the DataFrames and unknown values have been filled with NaNs. The missing value can be filled with interpolation when working with numeric values:&lt;br /&gt;
&lt;br /&gt;
 print aligned[0].a.interpolate()&lt;br /&gt;
&lt;br /&gt;
 2007-01-01 01:00:00    0.0&lt;br /&gt;
 2007-01-01 01:10:00    0.5&lt;br /&gt;
 2007-01-01 02:00:00    1.0&lt;br /&gt;
 2007-01-01 02:10:00    1.5&lt;br /&gt;
 2007-01-01 03:00:00    2.0&lt;br /&gt;
 2007-01-01 03:10:00    2.0&lt;br /&gt;
&lt;br /&gt;
Name: a, dtype: float64&lt;br /&gt;
&lt;br /&gt;
The categorical values can be filled using the fillna method:&lt;br /&gt;
&lt;br /&gt;
 print aligned[1].b.fillna(method='bfill')&lt;br /&gt;
&lt;br /&gt;
 2007-01-01 01:00:00    x&lt;br /&gt;
 2007-01-01 01:10:00    x&lt;br /&gt;
 2007-01-01 02:00:00    y&lt;br /&gt;
 2007-01-01 02:10:00    y&lt;br /&gt;
 2007-01-01 03:00:00    z&lt;br /&gt;
 2007-01-01 03:10:00    z&lt;br /&gt;
&lt;br /&gt;
Name: b, dtype: object&lt;br /&gt;
&lt;br /&gt;
The method bfill propagates the next valid observation, while ffil the last valid observation.&lt;br /&gt;
&lt;br /&gt;
Convert a Timedelta in hours:&lt;br /&gt;
&lt;br /&gt;
 td = pd.Timestamp('2017-07-05 16:00') - pd.Timestamp('2017-07-05 12:00')&lt;br /&gt;
&lt;br /&gt;
 print td / pd.Timedelta(1, unit='h')&lt;br /&gt;
&lt;br /&gt;
4.0&lt;br /&gt;
&lt;br /&gt;
To convert in days, months, minutes, and so on, one just needs to change the unit. Here are the values accepted: D, h, m, s, ms, us, ns.&lt;br /&gt;
&lt;br /&gt;
Convert pandas timestamps in Unix timestamps:&lt;br /&gt;
&lt;br /&gt;
 unix_ts = pd.date_range('2017-01-01 1:00', &lt;br /&gt;
                         '2017-01-01 2:00', &lt;br /&gt;
                         freq='30min').astype(np.int64) // 10**9&lt;br /&gt;
&lt;br /&gt;
 print unix_ts&lt;br /&gt;
&lt;br /&gt;
 Int64Index([1483232400, 1483234200, 1483236000], dtype='int64')&lt;br /&gt;
&lt;br /&gt;
To convert in milliseconds, divide by 10**6 instead of 10**9.&lt;br /&gt;
Convert Unix timestamps in pandas timestamps:&lt;br /&gt;
&lt;br /&gt;
 print pd.to_datetime(unix_ts, unit='s')&lt;br /&gt;
 DatetimeIndex(['2017-01-01 01:00:00', '2017-01-01 01:30:00',&lt;br /&gt;
                '2017-01-01 02:00:00'],&lt;br /&gt;
                dtype='datetime64[ns]', freq=None)&lt;br /&gt;
&lt;br /&gt;
To convert from timestamps in milliseconds, change the unit to ms.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Referensi==&lt;br /&gt;
&lt;br /&gt;
* https://dzone.com/articles/dates-in-pandas-cheatsheet&lt;/div&gt;</summary>
		<author><name>Onnowpurbo</name></author>
	</entry>
</feed>