![](/img/trans.png)
[英]How can I change the values in a dataframe column based off the index of a list?
[英]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.