Reputation: 39
type name balance
Assets John 4.000
Debt John 0.359
Assets Anna 1.5
Debt Anna 8
Assets Bob 3.2
Debt Jim 5
code
df = pd.DataFrame.from_dict(data['info']).set_index(['type','name'])
return df.loc[df.balance > 2]
out put
balance
type name
Assets John 4.000
Debt Anna 8
Assets Bob 3.2
Debt Jim 5
i want out put like this if assets over 2
balance
type name
Assets John 4.000
Assets Bob 3.2
Upvotes: 1
Views: 117
Reputation: 137
You can use two conditions to first filter by column type and then by balance
df = df[df["type"] == "Assets"].loc[df["balance"] > 2]
Output:
type name balance
0 Assets John 4.0
4 Assets Bob 3.2
Upvotes: 0
Reputation: 23099
IIUC, you can use df.filter
along it's index 0
then chain .loc
df.filter(like='Assets',axis=0).loc[df.balance > 2]
balance
type name
Assets John 4.0
Bob 3.2
you can also use isin
and specify the level.
df[(df.index.isin(['Assets'],level=0)) & (df.balance > 2)]
balance
type name
Assets John 4.0
Bob 3.2
Upvotes: 3