pandas: TypeError: 此数据类型不允许进行'reduction'操作'argmax
这是关于使用 Python 3.7.6 和 Jupyter Notebook 的内容。
import numpy as np
import pandas as pd
chipo = pd.DataFrame(open('orders_24.csv').read().splitlines())
chipo = chipo[0].str.split('\t',expand=True)
chipo.columns = ['order_id', 'quantity', 'item_name', 'choice_description', 'item_price']
chipo = chipo.drop(labels=0)
chipo
我想找到那个item,它的order_id是最大的:
我这样做有什么问题吗?有没有其他方法可以找到那个item的最大order_id?谢谢!
相关问题:
- 暂无相关问题
1 个回答
0
你需要改变一下“order_id”的数据类型。现在它看起来是一个对象类型。你可以用dtypes来确认一下它的类型。
print(chipo.dtypes)
对象类型是无法找到最大值的。你可以使用astype方法来改变这一列的类型,把它转换成整数类型。
chipo['order_id'] = chipo['order_id'].astype('int') # Change column type to integer
print(chipo['item_name'].iloc[chipo['order_id'].argmax()]) # Print result
注意,如果你现在检查dtypes,chipo['order_id']
的类型现在变成了整数(int)。
如果你不想永久性地改变这一列,你可以用一行代码来解决这个问题。
print(chipo['item_name'].iloc[chipo['order_id'].astype('int').argmax()])
最后,作为参考,你应该时刻关注你正在处理的列的类型。这可以帮你避免很多后续的麻烦。