Select 按索引和布尔索引
Select by index and by boolean indexing
输入程序:
import pandas as pd
df = pd.DataFrame({"A" : ["A0","A1","A2","A3"],
"B" : ["dog","cat","dog","dog"]})
myindexes = pd.Index([1,2])
A B
0 A0 dog
1 A1 cat
2 A2 dog
3 A3 dog
我想修改 df
以获得以下输出数据帧:
A B
0 A0 dog
1 A1 cat
2 match dog
3 A3 dog
我正在尝试通过索引值进行选择(使用变量 myindexes
) 和 通过布尔索引器进行选择(必须是 dog
在列 B
).
Pandas 不能容忍下面一行...但这就是我想表达的想法:
df.loc[(myindexes) & (df["B"] == "dog"), "A"] = "match"
代替(myindexes)
,使用df.index.isin(myindexes)
:
df.loc[df.index.isin(myindexes) & (df["B"] == "dog"), "A"] = "match"
输出:
>>> df
A B
0 A0 dog
1 A1 cat
2 match dog
3 A3 dog
输入程序:
import pandas as pd
df = pd.DataFrame({"A" : ["A0","A1","A2","A3"],
"B" : ["dog","cat","dog","dog"]})
myindexes = pd.Index([1,2])
A B
0 A0 dog
1 A1 cat
2 A2 dog
3 A3 dog
我想修改 df
以获得以下输出数据帧:
A B
0 A0 dog
1 A1 cat
2 match dog
3 A3 dog
我正在尝试通过索引值进行选择(使用变量 myindexes
) 和 通过布尔索引器进行选择(必须是 dog
在列 B
).
Pandas 不能容忍下面一行...但这就是我想表达的想法:
df.loc[(myindexes) & (df["B"] == "dog"), "A"] = "match"
代替(myindexes)
,使用df.index.isin(myindexes)
:
df.loc[df.index.isin(myindexes) & (df["B"] == "dog"), "A"] = "match"
输出:
>>> df
A B
0 A0 dog
1 A1 cat
2 match dog
3 A3 dog