In this tutorial, we'll take a closer look at the Pandas error, TypeError: DataFrame.pivot() takes 1 positional argument but 4 were given - Pandas. First, we'll create an example of how to produce it. Next, we'll explain the leading cause of the exception. And finally, we'll see how to fix it.
Example
Let's have a DataFrame like:
with data:
foo | bar | baz | zoo | |
---|---|---|---|---|
0 | one | A | 1 | x |
1 | one | B | 2 | y |
2 | one | B | 3 | z |
3 | two | A | 4 | q |
4 | two | B | 5 | w |
When running a code like the one below:
we get error message: TypeError: DataFrame.pivot() takes 1 positional argument but 4 were given
Cause
The reason for the error is that:
all arguments of DataFrame.pivot are keyword-only.
Which means that we need to provide argument names for each argument passed to this method.
You can read more on this link: ENH: Keep positional arguments for pivot #51359
The code above was working in the past. Pandas community is doing efforts to make Pandas code more:
- readable
- explicit
Solution
To solve error - TypeError: DataFrame.pivot() takes 1 positional argument but 4 were given - we need to provide all arguments by name:
This code will work fine.
Conclusion
We've explained Pandas's TypeError: DataFrame.pivot() takes 1 positional argument but 4 were given error. Then, we discussed the reason and shared a discussion on the topic. Lastly, we discussed how to resolve the error.