设IX为一些布尔矢量(或者可以是具有逻辑值的数据帧), df - 相同len的数据帧。
我希望得到类似 df [IX,:] 的内容, 即对于每列数据帧,获取 IX = true 的那些元素。
问题:有一些简单的方法吗?
我试过:我试过的方法1)df [IX] 2)df.loc [IX,:]似乎不起作用
df = pd.DataFrame(data={ 'Col' : 1. , 'Col2' : 1.1 }, index= ['A', 'B'])
df2 = pd.DataFrame(data={ 'ColDF2' : 2. }, index= ['C', 'D'])
IX = df2>0
IX.index = df.index
print(df)
print(df2)
print(IX)
print(df[IX] )
输出:
Col Col2
A 1.0 1.1
B 1.0 1.1
ColDF2
C 2.0
D 2.0
ColDF2
A True
B True
Col Col2
A NaN NaN
B NaN NaN
我想得到:
Col Col2
A 1.0 1.1
B 1.0 1.1
答案 0 :(得分:1)
您需要为条件选择列,然后在boolean indexing
创建的boolean numpy array
旁边使用values
:
IX = df2['ColDF2']>0
print(df[IX.values])
Col Col2
A 1.0 1.1
B 1.0 1.1
print(IX.values)
[ True True]
或者在掩码中创建相同的索引值,如答案所示:
IX = df2['ColDF2'] > 0
IX.index = df.index
print(df[IX])
Col Col2
A 1.0 1.1
B 1.0 1.1
print(IX)
A True
B True
Name: ColDF2, dtype: bool
如果df2
只有一列:
IX = df2>0
print (IX)
ColDF2
C True
D True
print(df[IX.values])
Col Col2
A 1.0 1.1
B 1.0 1.1
print (IX.values)
[[ True]
[ True]]