Python Pandas是返回索引

时间:2013-11-16 06:43:39

标签: python indexing pandas

我有一个pandas DataFrame df,其中包含唯一ID id的列表,以及一个包含所有已知ID master_df.id的主列表的DataFrame。我正在试图找出预先形成isin的最佳方法,它也会返回值所在的索引。所以如果我的DataFrame是

master_df

index id
1     1
2     2
3     3

df

index id
1     3
2     4
3     1

我想要像(3, False, 1)这样的东西。 我正在做一个正在进行然后查看然后用循环强制查找,但我确信有更好的方法来做它。

1 个答案:

答案 0 :(得分:3)

一种方法是进行合并:

In [11]: df.merge(mdf, on='id', how='left')
Out[11]: 
   index_x  id  index_y
0        1   3        3
1        2   4      NaN
2        3   1        1

和列index_y是所需的结果*:

In [12]: df.merge(mdf, on='id', how='left').index_y
Out[12]: 
0     3
1   NaN
2     1
Name: index_y, dtype: float64

*除了NaN与False之外,我认为NaN is what you really want在这里。正如@DSM所指出的那样,在python False == 0中你可能会遇到False的问题,因为缺少vs的代表被发现为id 0.(如果你仍然想要这样做,那么用{{0}将NaN替换为0 1}})。

注意:只关注您关注的列可能会更有效:

.fillna(0)