BUG: DataFrame.drop - Tuple Cannot Be Used as List-Like
See original GitHub issue- I have checked that this issue has not already been reported.
- I have confirmed this bug exists on the latest version of pandas.
- (optional) I have confirmed this bug exists on the master branch of pandas.
Code Sample
import pandas as pd
data = {"column_a": [5, 10, 15], "column_b": ["five", "ten", "fifteen"]}
index = [0, 1, 2]
frame = pd.DataFrame(data, index=index)
frame.drop(tuple([0, 1]))
Problem description
DataFrame.drop (https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.drop.html) should take a parameter ‘labels’ of ‘single label or list-like’ for the ‘Index or column labels to drop.’
According to documentation for api.types.is_list_like (https://pandas.pydata.org/docs/reference/api/pandas.api.types.is_list_like.html) “Objects that are considered list-like are for example Python lists, tuples, sets, NumPy arrays, and Pandas Series.”
We should be able to drop using a Tuple of Index labels. However, this leads to a ‘KeyError’ indicating the the entire tuple is not found as a value in the Index.
Expected Output
I expect this should return a DataFrame with the dropped Indexes - the same as if dropping with a List, Set, Array or Series of [0, 1].
frame.drop(tuple([0, 1])) == frame.drop([0, 1])
expected_data = {"column_a": [15], "column_b": ["fifteen"]}
expected_index = [2]
expected_output = pd.DataFrame(data, index=index)
Output of pd.show_versions()
INSTALLED VERSIONS
commit : 71f01a885f51544b4d9f388162d0476686061175 python : 3.8.10.final.0 python-bits : 64 OS : Darwin OS-release : 19.6.0 Version : Darwin Kernel Version 19.6.0: Mon Apr 12 20:57:45 PDT 2021; root:xnu-6153.141.28.1~1/RELEASE_X86_64 machine : x86_64 processor : i386 byteorder : little LC_ALL : en_US.UTF-8 LANG : en_US.UTF-8 LOCALE : en_US.UTF-8
pandas : 1.4.0.dev0+310.g71f01a885f numpy : 1.21.1 pytz : 2021.1 dateutil : 2.8.2 pip : 21.1.3 setuptools : 52.0.0.post20210125 Cython : 0.29.24 pytest : 6.2.4 hypothesis : 6.14.4 sphinx : 4.1.2 blosc : 1.10.4 feather : None xlsxwriter : 1.4.4 lxml.etree : 4.6.3 html5lib : 1.1 pymysql : None psycopg2 : None jinja2 : 3.0.1 IPython : 7.25.0 pandas_datareader: None bs4 : 4.9.3 bottleneck : 1.3.2 fsspec : 2021.05.0 fastparquet : 0.6.3 gcsfs : 2021.05.0 matplotlib : 3.4.2 numexpr : 2.7.3 odfpy : None openpyxl : 3.0.7 pandas_gbq : None pyarrow : 4.0.1 pyxlsb : None s3fs : 2021.05.0 scipy : 1.7.0 sqlalchemy : 1.4.22 tables : 3.6.1 tabulate : 0.8.9 xarray : 0.18.2 xlrd : 2.0.1 xlwt : 1.3.0 numba : 0.53.1
Issue Analytics
- State:
- Created 2 years ago
- Comments:12 (12 by maintainers)
An example seems like a good idea here to me.
@rhshadrach Yah of course, I can take this.
I also noticed that the reference to https://pandas.pydata.org/pandas-docs/stable/user_guide/advanced.html in the Docstring https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.drop.html isn’t working as a link.
Do you think its worth adding to the Docstring and Examples as well? Or did you only want to modify it in the labels parameter description like you specified.