我有一个“univer”数据框,它以州和地区名称作为列
State RegionName
0 Alabama Auburn
1 Alabama Florence
2 Alabama Jacksonville
3 Alabama Livingston
“statobot”数据帧以州和地区名称作为索引
State RegionName 2008Q3 2009Q2 ratio
AK Anchor Point NaN NaN NaN
Anchorage 296166.666667 271933.333333 1.089115
Fairbanks 249966.666667 225833.333333 1.106863
Homer NaN NaN NaN
Juneau 305133.333333 282666.666667 1.079481
Kenai NaN NaN NaN
Ketchikan NaN NaN NaN
Kodiak NaN NaN NaN
Lakes 257433.333333 257200.000000 1.000907
North Pole 241833.333333 219366.666667 1.102416
Palmer 259466.666667 263800.000000 0.983573
现在,我想基于“univer”数据框选择“statobot”数据框中的行,州和地区名称必须完全匹配,我已经尝试使用
haveuni = statobot[(statobot.index.get_level_values(0).isin(univer['State'])) &(statobot.index.get_level_values(1).isin(univer['RegionName']))]
但是结果行比我预期的要多。还有其他更精确的方法吗
最简单的方法是合并交叉点的两个数据帧
在这里,我对2个数据帧使用相同的多索引。如果没有索引,可以使用
left_on
和right_on
参数而不是left_index
和right_index
指定要合并的列另外,还有一些其他方法在多索引上使用
df.loc
和横截面df.xs
循环遍历'univer'数据帧,并在'statbot'数据帧中找到与索引-'State'和'RegionName'匹配的行
如果您可能希望整行不删除索引字段,那么
另一种方法是使用切片
我希望
pd.merge
对你的情况有用。让我知道进展如何相关问题 更多 >
编程相关推荐