【发布时间】: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