Skip to content

Instantly share code, notes, and snippets.

View BenjaminWolfe's full-sized avatar

Benjamin Wolfe BenjaminWolfe

View GitHub Profile
@BenjaminWolfe
BenjaminWolfe / test_chaining_series.py
Last active April 19, 2021 17:50
This is a nice test case to learn to use %timeit, as well as np.random.seed. I needed to do something like df.query, but with a series. Turns out that in at least simple cases it can be easy and fast with .loc and a lambda function.
import numpy as np, pandas as pd
df_len = 1000 # integer multiple of 4
np.random.seed(42)
# create a random data frame
df = pd.DataFrame(
{
"group_a": np.random.randint(0, df_len / 4, size=df_len),
"group_b": np.random.randint(0, df_len / 4, size=df_len),
@BenjaminWolfe
BenjaminWolfe / np-where-multiple-columns.py
Created April 28, 2021 02:59
How do I use np.where with multiple columns at once?
# how to use np.where with multiple columns at once, even whole data frames?
import numpy as np
import pandas as pd
np.random.seed(42)
df1 = pd.DataFrame(np.random.randint(0, 100, size=(100, 4)), columns=list("ABCD"))
df2 = pd.DataFrame(np.random.randint(0, 100, size=(100, 4)), columns=list("ABCD"))
condition = pd.Series(np.random.choice(a=[False, True], size=100, p=[.1, .9]))
@BenjaminWolfe
BenjaminWolfe / curl.R
Last active April 3, 2022 21:31
Create Pages in Notion with R
# See `curl.md`. Here is the R equivalent.
library(httr)
library(jsonlite)
make_page <- function(url, headers, data) {
response <- POST(
url = url,
body = toJSON(data, auto_unbox = TRUE),
config = add_headers(.headers = headers)
@BenjaminWolfe
BenjaminWolfe / typeform-helpers.js
Created August 23, 2022 14:23
Typeform Helpers
// background
function timer(ms) { return new Promise(res => setTimeout(res, ms)); }
async function keepGoing(direction, i) {
await timer(500);
const directions = {"up": "previous", "down": "next"};
document.querySelectorAll(`[data-qa="fixed-footer-navigation-${directions[direction]}"]`)[0].click()
await timer(500);
let focusQ = document.querySelectorAll('[data-qa-focused="true"]')[0]
let qId = focusQ.getAttribute('data-qa-blockref');