【发布时间】:2018-12-27 03:05:59
【问题描述】:
我有一个包含很多列的 pandas DataFrame (df),其中两个是“Year”和“col_1”
我还有一个总结在一个列表中的提取标准(Criteria):
[1234,5432,...,54353,654,1234]。
如果满足以下条件,我想提取此 DataFrame 的子集:
((df.Year==1990) & (df.col_1>=Criteria[0])) or
((df.Year==1991) & (df.col_1>=Criteria[1])) or
((df.Year==1992) & (df.col_1>=Criteria[2])) or
...
((df.Year==2010) & (df.col_1>=Criteria[20])) or
((df.Year==2011) & (df.col_1>=Criteria[21]))
虽然我可以列出这些标准的所有组合,但我想 用短短一行代码完成此操作,例如:
df = df[df[['col_1','col_2']].apply(lambda x: f(*x), axis=1)]
(来自how do you filter pandas dataframes by multiple columns)
请告诉我该怎么做。谢谢。
【问题讨论】:
-
你能发布你的数据框吗?和你的标准列表?
-
您可以添加使用您指定的 lambda 函数生成的列
rank,然后对您的排名列进行排序 -
@user3483203 您可以在下面的答案中使用标准列表。和我的格式一样。
-
@oberron 在这种情况下我应该如何编写 lambda 函数?
标签: python pandas filter multiple-columns