Pandas使用另一个DataFrame应用函数

时间:2018-02-13 14:54:10

标签: python pandas

我尝试在我的数据框('家庭')上使用apply函数,该数据框具有多索引('状态'和#39; RegionName') 。我使用的函数试图检查状态和区域名称的组合是否与我的其他数据框匹配(' UT')。 应用此功能时:

homes['UT']=homes.apply(lambda row: 1 if 
ut[(ut['State']==states[homes.iloc[row].name[0]]) &
         (ut['RegionName']==homes.iloc[row].name[1])] else 0, axis=1)

我得到一个错误,说基本上我的索引超出界限。

我尝试了一些事情,例如将其他数据框转换为两个列表,并检查我的数据帧的行是否在这些列表中,但仍然会出现相同的错误。

我的数据框头:

State   RegionName
1   Alabama Auburn
2   Alabama Florence
3   Alabama Jacksonville
4   Alabama Livingston
5   Alabama Montevallo

我的家庭数据框头:

        2000q1  2000q2  2000q3  2000q4
State   RegionName              
New York    New York    NaN NaN NaN NaN
California  Los Angeles 207066.666667   214466.666667   220966.666667   226166.666667
Illinois    Chicago 138400.000000   143633.333333   147866.666667   152133.333333
Pennsylvania    Philadelphia    53000.000000    53633.333333    54133.333333    54700.000000
Arizona Phoenix 111833.333333   114366.666667   116000.000000   117400.000000

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

发现答案谢谢@ user8505495。

代码应该是这样的:

homes['UT']=homes.apply(lambda row: 1 if (row.name[0]+', '+row.name[1] in ut['full'].values) else 0, axis=1)

我不知道它为什么会起作用但确实如此。感谢所有的帮助!