Description
Pandas version checks
-
I have checked that this issue has not already been reported.
-
I have confirmed this bug exists on the latest version of pandas.
-
I have confirmed this bug exists on the main branch of pandas.
Reproducible Example
import pandas as pd
empty_df = pd.DataFrame({'a': [], 'b': []})
empty_df.groupby('a').sample()
Issue Description
Calling sample()
on an empty dataframe returns
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
Input In [1], in <cell line: 3>()
1 empty_df = pd.DataFrame({'a': [], 'b': []})
----> 2 empty_df.groupby('a').sample()
File ~.../pandas/core/groupby/groupby.py:4284, in sample(self, n, frac, replace, weights, random_state)
4275 assert frac is not None
4276 sample_size = round(frac * group_size)
4278 grp_sample = sample.sample(
4279 group_size,
4280 size=sample_size,
4281 replace=replace,
4282 weights=None if weights is None else weights_arr[grp_indices],
4283 random_state=random_state,
-> 4284 )
4285 sampled_indices.append(grp_indices[grp_sample])
4287 sampled_indices = np.concatenate(sampled_indices)
File <__array_function__ internals>:180, in concatenate(*args, **kwargs)
ValueError: need at least one array to concatenate
Expected Behavior
Should return an empty dataframe
Empty DataFrame
Columns: [a, b]
Index: []
Installed Versions
pandas : 1.5.0.dev0+1364.g201cbf6bc1.dirty
numpy : 1.22.3
pytz : 2022.1
dateutil : 2.8.2
setuptools : 60.9.3
pip : 22.1.1
Cython : 0.29.32
pytest : 7.1.2
hypothesis : 6.52.3
sphinx : None
blosc : None
feather : None
xlsxwriter : None
lxml.etree : 4.8.0
html5lib : None
pymysql : None
psycopg2 : None
jinja2 : 3.1.2
IPython : 8.3.0
pandas_datareader: 0.10.0
bs4 : 4.11.1
bottleneck : None
brotli : None
fastparquet : None
fsspec : None
gcsfs : None
matplotlib : 3.5.2
numba : None
numexpr : None
odfpy : None
openpyxl : None
pandas_gbq : None
pyarrow : None
pyreadstat : None
pyxlsb : None
s3fs : None
scipy : 1.8.1
snappy : None
sqlalchemy : None
tables : None
tabulate : None
xarray : None
xlrd : None
xlwt : None
zstandard : None
tzdata : None