question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

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:closed
  • Created 2 years ago
  • Comments:12 (12 by maintainers)

github_iconTop GitHub Comments

1reaction
rhshadrachcommented, Jul 29, 2021

An example seems like a good idea here to me.

1reaction
mikephung122commented, Jul 29, 2021

@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.

Read more comments on GitHub >

github_iconTop Results From Across the Web

DataFrame.drop works with lists but not tuples - Stack Overflow
I do not find it intuitive that when a tuple is passed to DataFrame.drop() , it throws an error but when a list...
Read more >
BUG: DataFrame.drop() can't drop row by index tuple ... - GitHub
When the DataFrame is MultiIndexed, and there's duplicated value in any level, DataFrame.drop() can't drop a row by an index tuple. I've tried...
Read more >
pandas.DataFrame.drop — pandas 1.5.2 documentation
Index or column labels to drop. A tuple will be used as a single label and not treated as a list-like. axis{0 or...
Read more >
KeyError Pandas – How To Fix - Data Independent
Pandas KeyError - This annoying error means that Pandas can not find your column name in your dataframe. Here's how to fix this...
Read more >
Pandas Drop Rows From DataFrame Examples
DataFrame.drop() method you can drop/remove/delete rows from DataFrame. axis param ... Accepts single label or list-like. columns – Use to specify columns.
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found