我尝试在我的数据框('家庭')上使用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
有什么建议吗?
答案 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)
我不知道它为什么会起作用但确实如此。感谢所有的帮助!