【问题标题】:Select the row values of dataframe if row name is present in column name of another dataframe in pandas如果 pandas 中另一个数据框的列名中存在行名,则选择数据框的行值
【发布时间】:2020-10-15 17:20:16
【问题描述】:

如果我有 df1

df1 = pd.DataFrame({'Col_Name': {0: 'A', 1: 'b', 2: 'c'}, 'X': {0: 12, 1: 23, 2: 223}, 'Z': {0: 42, 1: 33, 2: 28 }})

df2

df2 = pd.DataFrame({'Col': {0: 'Y', 1: 'X', 2: 'Z'}, 'Low1': {0: 0, 1: 0, 2: 0}, 'High1': {0: 10, 1: 10, 2: 630}, 'Low2': {0: 10, 1: 10, 2: 630}, 'High2': {0: 50, 1: 50, 2: 3000}, 'Low3': {0: 50, 1: 50, 2: 3000}, 'High3': {0: 100, 1: 100, 2: 8500}, 'Low4': {0: 100, 1: 100, 2: 8500}, 'High4': {0: 'np.inf', 1: 'np.inf', 2: 'np.inf'}})

如果 df1 的列名中存在行,则选择 df2 的行值。

预期输出:df3

df3 = pd.DataFrame({'Col': {0: 'X', 1: 'Z'}, 'Low1': {0: 0, 1: 0}, 'High1': {0: 10, 1: 630}, 'Low2': {0: 10, 1: 630}, 'High2': {0: 50, 1: 3000}, 'Low3': {0: 50, 1: 3000}, 'High3': {0: 100, 1: 8500}, 'Low4': {0: 100, 1: 8500}, 'High4': {0: 'np.inf', 1: 'np.inf'}})

怎么做?

【问题讨论】:

  • df2.loc[df2.isin(df1.columns).any(axis=1)]

标签: python python-3.x pandas dataframe


【解决方案1】:

您可以传递一个布尔列表来选择您想要的df2 的行。可以通过查看Col 列中的每个值并询问该值是否在df1 列中来创建此列表

df3 = df2[[col in df1.columns for col in df2['Col']]]

【讨论】:

    【解决方案2】:

    您可以删除不相关的列并使用其他列...

    df3 = df2[df2['Col'].isin(list(df1.drop('Col_Name',axis=1).columns))]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-28
      • 2017-11-26
      • 2018-11-06
      • 2019-12-24
      • 1970-01-01
      • 2023-01-18
      • 1970-01-01
      相关资源
      最近更新 更多