Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jorisvandenbossche/37c17bf6f3a67df8decb1d55fdd6def4 to your computer and use it in GitHub Desktop.
Save jorisvandenbossche/37c17bf6f3a67df8decb1d55fdd6def4 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"metadata": {},
"cell_type": "markdown",
"source": "Regarding discussion of https://github.com/pandas-dev/pandas/issues/24559"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "ts = pd.Timestamp('2000', tz='US/Pacific')\ntz = ts.tz",
"execution_count": 1,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "ts",
"execution_count": 2,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 2,
"data": {
"text/plain": "Timestamp('2000-01-01 00:00:00-0800', tz='US/Pacific')"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "value = ts.value",
"execution_count": 3,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "pd.Timestamp(value)",
"execution_count": 4,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 4,
"data": {
"text/plain": "Timestamp('2000-01-01 08:00:00')"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "res_wall_time = pd.Timestamp(value).tz_localize('US/Pacific')\nres_wall_time",
"execution_count": 5,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 5,
"data": {
"text/plain": "Timestamp('2000-01-01 08:00:00-0800', tz='US/Pacific')"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "res_unix_epoch = pd.Timestamp(value).tz_localize('UTC').tz_convert('US/Pacific')\nres_unix_epoch",
"execution_count": 6,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 6,
"data": {
"text/plain": "Timestamp('2000-01-01 00:00:00-0800', tz='US/Pacific')"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "results = {'constructor': [], 'arg_type': [], 'result': [], 'action': []}\n\nfor name, con in [\n ('Timestamp', lambda x, tz: pd.Timestamp(x, tz=tz)), \n ('DatetimeIndex', lambda x, tz: pd.DatetimeIndex([x], tz=tz)),\n ('DatetimeArray', lambda x, tz: pd.core.arrays.DatetimeArray(np.array([x]), dtype=pd.api.types.DatetimeTZDtype(tz=tz)))]:\n for val in [np.int64(value), np.datetime64(value, 'ns')]:\n results['constructor'].append(name)\n results['arg_type'].append(type(val).__name__)\n try:\n res = con(val, tz)\n except:\n res = '--'\n else:\n try:\n res = res[0]\n except:\n pass\n \n results['result'].append(res)\n \n if res == res_wall_time:\n results['action'].append('wall time')\n elif res == res_unix_epoch:\n results['action'].append('unix epoch')\n else:\n results['action'].append('--')",
"execution_count": 7,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "pandas 0.24.3:"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "pd.DataFrame(results, dtype=object)[['constructor', 'arg_type', 'result', 'action']]",
"execution_count": 8,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 8,
"data": {
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>constructor</th>\n <th>arg_type</th>\n <th>result</th>\n <th>action</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>Timestamp</td>\n <td>int64</td>\n <td>2000-01-01 00:00:00-08:00</td>\n <td>unix epoch</td>\n </tr>\n <tr>\n <th>1</th>\n <td>Timestamp</td>\n <td>datetime64</td>\n <td>2000-01-01 00:00:00-08:00</td>\n <td>unix epoch</td>\n </tr>\n <tr>\n <th>2</th>\n <td>DatetimeIndex</td>\n <td>int64</td>\n <td>2000-01-01 08:00:00-08:00</td>\n <td>wall time</td>\n </tr>\n <tr>\n <th>3</th>\n <td>DatetimeIndex</td>\n <td>datetime64</td>\n <td>2000-01-01 08:00:00-08:00</td>\n <td>wall time</td>\n </tr>\n <tr>\n <th>4</th>\n <td>DatetimeArray</td>\n <td>int64</td>\n <td>--</td>\n <td>--</td>\n </tr>\n <tr>\n <th>5</th>\n <td>DatetimeArray</td>\n <td>datetime64</td>\n <td>--</td>\n <td>--</td>\n </tr>\n </tbody>\n</table>\n</div>",
"text/plain": " constructor arg_type result action\n0 Timestamp int64 2000-01-01 00:00:00-08:00 unix epoch\n1 Timestamp datetime64 2000-01-01 00:00:00-08:00 unix epoch\n2 DatetimeIndex int64 2000-01-01 08:00:00-08:00 wall time\n3 DatetimeIndex datetime64 2000-01-01 08:00:00-08:00 wall time\n4 DatetimeArray int64 -- --\n5 DatetimeArray datetime64 -- --"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Master:"
},
{
"metadata": {
"trusted": true,
"scrolled": true
},
"cell_type": "code",
"source": "pd.DataFrame(results, dtype=object)[['constructor', 'arg_type', 'result', 'action']]",
"execution_count": 8,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 8,
"data": {
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>constructor</th>\n <th>arg_type</th>\n <th>result</th>\n <th>action</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>Timestamp</td>\n <td>int64</td>\n <td>2000-01-01 00:00:00-08:00</td>\n <td>unix epoch</td>\n </tr>\n <tr>\n <th>1</th>\n <td>Timestamp</td>\n <td>datetime64</td>\n <td>2000-01-01 00:00:00-08:00</td>\n <td>unix epoch</td>\n </tr>\n <tr>\n <th>2</th>\n <td>DatetimeIndex</td>\n <td>int64</td>\n <td>2000-01-01 00:00:00-08:00</td>\n <td>unix epoch</td>\n </tr>\n <tr>\n <th>3</th>\n <td>DatetimeIndex</td>\n <td>datetime64</td>\n <td>2000-01-01 08:00:00-08:00</td>\n <td>wall time</td>\n </tr>\n <tr>\n <th>4</th>\n <td>DatetimeArray</td>\n <td>int64</td>\n <td>2000-01-01 00:00:00-08:00</td>\n <td>unix epoch</td>\n </tr>\n <tr>\n <th>5</th>\n <td>DatetimeArray</td>\n <td>datetime64</td>\n <td>2000-01-01 00:00:00-08:00</td>\n <td>unix epoch</td>\n </tr>\n </tbody>\n</table>\n</div>",
"text/plain": " constructor arg_type result action\n0 Timestamp int64 2000-01-01 00:00:00-08:00 unix epoch\n1 Timestamp datetime64 2000-01-01 00:00:00-08:00 unix epoch\n2 DatetimeIndex int64 2000-01-01 00:00:00-08:00 unix epoch\n3 DatetimeIndex datetime64 2000-01-01 08:00:00-08:00 wall time\n4 DatetimeArray int64 2000-01-01 00:00:00-08:00 unix epoch\n5 DatetimeArray datetime64 2000-01-01 00:00:00-08:00 unix epoch"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "[PR #24623 (EA: treatment of i8 values)](https://github.com/pandas-dev/pandas/pull/24623):"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "pd.DataFrame(results, dtype=object)[['constructor', 'arg_type', 'result', 'action']]",
"execution_count": 8,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 8,
"data": {
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>constructor</th>\n <th>arg_type</th>\n <th>result</th>\n <th>action</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>Timestamp</td>\n <td>int64</td>\n <td>2000-01-01 00:00:00-08:00</td>\n <td>unix epoch</td>\n </tr>\n <tr>\n <th>1</th>\n <td>Timestamp</td>\n <td>datetime64</td>\n <td>2000-01-01 00:00:00-08:00</td>\n <td>unix epoch</td>\n </tr>\n <tr>\n <th>2</th>\n <td>DatetimeIndex</td>\n <td>int64</td>\n <td>2000-01-01 00:00:00-08:00</td>\n <td>unix epoch</td>\n </tr>\n <tr>\n <th>3</th>\n <td>DatetimeIndex</td>\n <td>datetime64</td>\n <td>2000-01-01 08:00:00-08:00</td>\n <td>wall time</td>\n </tr>\n <tr>\n <th>4</th>\n <td>DatetimeArray</td>\n <td>int64</td>\n <td>2000-01-01 00:00:00-08:00</td>\n <td>unix epoch</td>\n </tr>\n <tr>\n <th>5</th>\n <td>DatetimeArray</td>\n <td>datetime64</td>\n <td>2000-01-01 08:00:00-08:00</td>\n <td>wall time</td>\n </tr>\n </tbody>\n</table>\n</div>",
"text/plain": " constructor arg_type result action\n0 Timestamp int64 2000-01-01 00:00:00-08:00 unix epoch\n1 Timestamp datetime64 2000-01-01 00:00:00-08:00 unix epoch\n2 DatetimeIndex int64 2000-01-01 00:00:00-08:00 unix epoch\n3 DatetimeIndex datetime64 2000-01-01 08:00:00-08:00 wall time\n4 DatetimeArray int64 2000-01-01 00:00:00-08:00 unix epoch\n5 DatetimeArray datetime64 2000-01-01 08:00:00-08:00 wall time"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "",
"execution_count": null,
"outputs": []
}
],
"metadata": {
"kernelspec": {
"name": "dev",
"display_name": "Python 3 (dev)",
"language": "python"
},
"language_info": {
"file_extension": ".py",
"version": "3.5.5",
"nbconvert_exporter": "python",
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"name": "python",
"mimetype": "text/x-python",
"pygments_lexer": "ipython3"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment