【问题标题】:Perform operation on DataFrame and get result as Dataframe which matches either of the condition present in another DataFrame in pandas对 DataFrame 执行操作并以 DataFrame 形式获取结果,该结果与 Pandas 中另一个 DataFrame 中存在的任一条件匹配
【发布时间】:2020-08-27 08:33:31
【问题描述】:

我有一个 DataFrame df1:

df1 = pd.DataFrame([[31,12,32,65],[42,19,22,78],[76,13,45,68],[43,37,43,71],[43,18,34,73]],columns=['A', 'B', 'C', 'D'])

和另一个DataFrame df2:

df2 = pd.DataFrame([["B",">20"],["C",">40"],["D","<70"],["A","<40"]],columns = ["Feature","Condition"])

想要使用 df2 中存在的相应条件对 df1 执行操作。结果应该是满足 df2 中存在的任一条件的 DataFrame,如下所示。

Output = pd.DataFrame([[31,12,32,65],[76,13,45,68],[43,37,43,71]],columns=['A', 'B', 'C', 'D']) 

怎么做?请帮忙。

【问题讨论】:

  • 那是针对单个列,而不是匹配任一条件的整个数据框
  • 嗯,你是技术专家,对 - 使用你自己的能力
  • 我是一个编程初学者,我试过但做不到。

标签: python pandas dataframe


【解决方案1】:

你可以使用agg创建条件然后query:

# create condition 
conds = " or ".join(df2.agg(" ".join, axis=1).tolist())

# apply condition
df = df1.query(conds)

print(df)

    A   B   C   D
0  31  12  32  65
2  76  13  45  68
3  43  37  43  71

【讨论】:

    猜你喜欢
    • 2019-07-03
    • 2022-08-19
    • 2020-12-07
    • 1970-01-01
    • 2021-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-01
    相关资源
    最近更新 更多