Say we have a DataFrame df
df = pd.DataFrame({
    "Id": [1, 2],
    "Value": [2, 5]
})
df
    Id  Value
0   1   2
1   2   5
and some function f which takes an element of df and returns a DataFrame.
def f(value):
    return pd.DataFrame({"A": range(10, 10 + value), "B": range(20, 20 + value)})
f(2)
    A   B
0   10  20
1   11  21
We want to apply f to each element in df["Value"], and join the result to df, like so:
    Id  Value   A   B
0   1   2       10  20
1   1   2       11  21
2   2   5       10  20
2   2   5       11  21
2   2   5       12  22
2   2   5       13  23
2   2   5       14  24
In T-SQL, with a table df and table-valued function f, we would do this with a CROSS APPLY:
SELECT * FROM df
CROSS APPLY f(df.Value)
How can we do this in pandas?
 
     
     
    