我经常想使用多个条件选择单行 Pandas DataFrame。对于进一步处理,将其作为 Series 或 Dict 访问是有用的,而不是作为 1xW DataFrame。我可以这样做:r = df.loc[ (df['col1'] == v1) & (df['col2'] == v2) ]if len(r.index) != 1: raise ValueError(...)r = r.iloc[0]这感觉有点笨拙。有没有更好的推荐方法?
1 回答
森林海
TA贡献2011条经验 获得超2个赞
没有一个内置访问器会做你想做的事。您可以构建自己的访问器并对其进行猴子补丁:
def get(df, **kwargs):
cond = [True] * df.shape[0]
for col, value in kwargs.items():
cond &= df[col] == value
result = df[cond]
if result.shape[0] > 1:
raise ValueError('Key must be unique')
return result.iloc[0]
pd.DataFrame.get = get
# Usage
df.get(col1=..., col2=..., col3=...)
但是,这相对较慢,因此不要在紧密循环中调用它。
添加回答
举报
0/150
提交
取消