If I have a DataFrame such that:
pd.DataFrame( {\"name\" : \"John\",
\"days\" : [[1, 3, 5, 7]]
})
<
Here's something with NumPy -
lens = [len(item) for item in df['days']]
df_out = pd.DataFrame( {"name" : np.repeat(df['name'].values,lens),
"days" : np.hstack(df['days'])
})
As pointed in @unutbu's solution np.concatenate(df['days'].values) would be faster than np.hstack(df['days']).
It uses a loop-comprehension to extract the lengths of each 'days' element, which must be minimal runtime-wise.
Sample run -
>>> df
days name
0 [1, 3, 5, 7] John
1 [2, 4] Eric
>>> lens = [len(item) for item in df['days']]
>>> pd.DataFrame( {"name" : np.repeat(df['name'].values,lens),
... "days" : np.hstack(df['days'])
... })
days name
0 1 John
1 3 John
2 5 John
3 7 John
4 2 Eric
5 4 Eric