【发布时间】:2020-09-07 05:53:23
【问题描述】:
我有一个包含一些数据的数据框。我想在这个数据框上应用一个条件。
当我这样写代码时:-
import pandas as pd
data_store = pd.read_excel("101010.xlsx")
fff = data_store[data_store.Price > 20]
print(fff.sort_values("Total Sale", ascending=False))
程序正在运行并返回(显示)我想要的数据框元素值,如下所示:-
Total Sale Price
100000 64
95000 21
94000 25
70000 30
61000 41
59000 23
54000 50
40000 55
但是当我像这样在单行中编写该代码时:-
import pandas as pd
data_store = pd.read_excel("101010.xlsx")
fff = (data_store[data_store.Price > 20]) and (data_store.sort_values("Total Sale", ascending=False))
print(fff)
我收到这样的错误:-
Traceback (most recent call last):
File "C:/Users/Moli/PycharmProjects/first/main.py", line 3, in <module>
fff = (data_store[data_store.Price > 20]) and (data_store.sort_values("Total Sale",
ascending=False))
File "C:\Python37\lib\site-packages\pandas\core\generic.py", line 1327, in __nonzero__
f"The truth value of a {type(self).__name__} is ambiguous. "
ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any()
or a.all().
Process finished with exit code 1
请一些人帮助我。 我怎么能像这样在单行中写这个条件:-
(data_store[data_store.Price > 20]) and (data_store.sort_values("Total Sale", ascending=False))
提前谢谢你:) :) :)
【问题讨论】:
-
data_store[data_store.Price > 20].sort_values("Total Sale", ascending=False)可以为你工作@Amelia -
@ShivamJha
sort_values返回排序后的df还是原地执行?因为如果它在适当的位置执行它,您将不会引用已排序和过滤的数据帧。 -
@Adirio Pandas
sort_values()函数按传递的列的升序或降序对数据框进行排序。它与sorted()Python 函数不同,因为它不能对数据框进行排序并且不能选择特定的列。语法:DataFrame.sort_values(by, axis=0, ascending=True, inplace=False, kind=’quicksort’, na_position=’last’) -
@ShivamJha 我知道
sort_values做了什么,我问它是在原地完成的,还是返回了排序的数据帧。答案是它默认返回排序后的数据帧,并且有一个参数可以做到这一点,所以你提出的解决方案确实有效。
标签: python python-3.x