Я хочу создать таблицу (скажем, в записной книжке Jupyter) на основе функции и продукта двух списков. Чтобы привести конкретный пример, мои данные:
rows = [1, 2, 3, 4]
columns = [100, 200, 300]
f = x + y
Я ожидаю что-то вроде
100 200 300
1 101 201 301
2 102 202 302
3 103 203 303
4 104 204 304
Мое текущее решение:
import pandas as pd
from itertools import product, zip_longest
# this is from the package more-itertools
def grouper(iterable, n, fillvalue=None):
"Collect data into fixed-length chunks or blocks"
# grouper('ABCDEFG', 3, 'x') --> ABC DEF Gxx"
args = [iter(iterable)] * n
return zip_longest(*args, fillvalue=fillvalue)
f = lambda row: row[0] + row[1]
results = (
pd.DataFrame(grouper(product(rows, columns), len(columns)), columns=columns, index=rows)
.applymap(f)
)
Это очень запутанный, и я чувствую, что есть способ лучше