如何获取1的列的ID

时间:2019-04-27 08:15:32

标签: python pandas

我有两栏,我想做两件事。获取为1的行的ID也表示True,并获取目标列和教授为1的行的ID。

Ids   prof    goal
1     1        1
2     0        1
3     0        0
4     1        1

我想要这样的东西。 首先获取教授所在位置的所有ID。 第二项任务是获取prof和目标为1的id。

尝试:

df.groupby(['prof','goal']).size() 

不确定如何通过此操作获取他们的ID。

3 个答案:

答案 0 :(得分:2)

如果数据中只有10值,则创建布尔掩码转换为布尔值:

m1 = df['prof'].astype(bool)
m2 = df['goal'].astype(bool)

或通过1进行比较:

m1 = df['prof'] == 1
m2 = df['goal'] == 1

m3 = df[['prof','goal']].all(axis=1)

如果Ids是列,则用boolean indexingDataFrame.loc进行过滤:

a = df.loc[m1, 'Ids']

b = df.loc[m1 & m2, 'Ids']

b = df.loc[m3, 'Ids']

如果Ids是索引:

a = df.index[m1]

b = df.index[m1 & m2]

b = df.index[m3]

更慢的选择是在以下位置过滤器index

a = df[m1].index

b = df[m1 & m2].index

b = df[m3].index

答案 1 :(得分:0)

这给您想要的东西

import pandas as pd

df = pd.DataFrame({'Ids': list(range(1, 5)),
                   'prof': [1, 0, 0, 1],
                   'goal': [1, 1, 0, 1]})
df.set_index('Ids', drop=True, inplace=True)

df[df['prof'] == 1].index
df[(df['prof'] == 1) & (df['goal'] == 1)].index

答案 2 :(得分:0)

使用query仅是现有答案的变体:

import pandas as pd

df = pd.read_clipboard()

df.set_index('Ids').query('prof == 1 and goal == 1').index

然后将返回

Int64Index([1, 4], dtype='int64', name='Ids')