【问题标题】:Pandas: Matching index of one dataframe to the column of other dataframePandas:将一个数据框的索引与其他数据框的列匹配
【发布时间】:2019-10-17 10:04:12
【问题描述】:

我有两个名为 df1 & df2 的数据框:

df1

df2

SITE_NUMBER 设置为 df1 的索引。现在,如果 df2 的“S_STATION”的值与 df1 的索引值匹配,我想返回 df1 的“FACILITY”列。为此我写了一个函数:

def return_facility():
   return df1[df1['SITE_NUMBER'] == pd.to_numeric(df2['S_STATION'])]['FACILITY']

但是,由于编译器无法识别 df1['SITE_NUMBER'],因此该函数无法正常工作。谁能指出我哪里出错了?

【问题讨论】:

  • SITE_NUMBER 是 df1 的索引,而不是列。您像列一样引用它。
  • 是的,同意,我们还有其他方法可以匹配吗?
  • @vb_rises 不起作用。抛出错误信息“ValueError:索引必须是单调递增或递减”
  • df1.sort_index().loc[:'SITE_NUMBER']
  • 更好的解决方案是使用pd.merge(df1, df2, left_index=True, right_on='S_STATION'),然后提取所需的列。

标签: python python-3.x pandas


【解决方案1】:

您需要isin。在df1.index上使用它

def return_facility():
   return df1.loc[df1.index.isin(pd.to_numeric(df2['S_STATION'])), 'FACILITY']

【讨论】:

    猜你喜欢
    • 2020-01-28
    • 2015-08-11
    • 2019-01-22
    • 1970-01-01
    • 1970-01-01
    • 2015-11-21
    • 2020-08-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多