簡體   English   中英

根據列和值列表獲取 Dataframe 索引

[英]Get Dataframe index based off of list of columns and values

我正在嘗試返回 Name Column 為“Mike”、State Column 為“Operational”/“Broken”、Likelihood Column 為“High”且 Status Column 為“Open”/“Closed”的索引。 此示例的索引應為 1 和 2。

import pandas as pd
df = pd.DataFrame(columns=['Name', 'State', 'Likelihood', 'Status']
df['Name'] = ['John', 'Mike', 'Mike', 'Jeff']
df['State'] = ['Operational', 'Operational', 'Broken', 'Operational' ]
df['Likelihood'] = ['High', 'High', 'Low', 'High']
df['Status'] = ['Open', 'Closed', 'Open', 'Closed']

print(df.index[df[['Name', 'State', 'Likelihood', 'Status']].isin(['Mike','Operational','Broken', 'High', 'Low' 'Open', ]).all(axis=1)])

目前沒有打印索引 1 和 2 的運氣...目前只打印 2

你可以這樣做

print(df[df.Name.isin(['Mike'])& (df.State.isin(['Operational','Broken'])| df.Likelihood.isin(['High','Low'])| df.Status.isin(['Open']))])

Output

Name        State Likelihood  Status
Mike  Operational       High  Closed
Mike       Broken        Low    Open

在 dataframe 中以干凈的方式執行多個 boolean 掩碼的一種方法是:

df[
   df['Name'].eq('Mike') &
   df['State'].isin(['Operational', 'Broken']) &
   df['Likelihood'].isin(['High', 'Low']) &
   df['Status'].isin(['Open', 'Closed'])
]

Output:

    Name    State        Likelihood     Status
1   Mike    Operational     High        Closed
2   Mike    Broken          Low          Open

如果你想要索引:

df[
   df['Name'].eq('Mike') &
   df['State'].isin(['Operational', 'Broken']) &
   df['Likelihood'].isin(['High', 'Low']) &
   df['Status'].isin(['Open', 'Closed'])
].index.tolist()

Output:

[1, 2]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM