如何在 Python 的另一个数据框中检查 pandas 数据框的 ID?

How can I check the ID of a pandas data frame in another data frame in Python?

您好,我有以下数据框:

df = 
ID   Value
a     45
b     3
c     10

还有另一个带有每个值的数字 ID 的数据框

df1 =

ID    ID_n
a      3
b      35
c      0
d      7
e      1

我想在 df 中有一个新列,其中包含数字 ID,因此:

df = 
ID   Value  ID_n
a     45     3
b     3      35 
c     10     0

谢谢

使用pandas合并:

import pandas as pd

df1 = pd.DataFrame({
    'ID': ['a', 'b', 'c'],
    'Value': [45, 3, 10]
})

df2 = pd.DataFrame({
    'ID': ['a', 'b', 'c', 'd', 'e'],
    'ID_n': [3, 35, 0, 7, 1],
})

df1.set_index(['ID'], drop=False, inplace=True)
df2.set_index(['ID'], drop=False, inplace=True)

print pd.merge(df1, df2, on="ID", how='left')

输出:

  ID  Value  ID_n
0  a     45     3
1  b      3    35
2  c     10     0

您可以使用 join(),

In [14]: df1.join(df2)
Out[14]: 
    Value  ID_n
ID             
a      45     3
b       3    35
c      10     0

如果您希望索引为数字,您可以 reset_index(),

In [17]: df1.join(df2).reset_index()
Out[17]: 
  ID  Value  ID_n
0  a     45     3
1  b      3    35
2  c     10     0

您可以一次完成此操作。 join 适用于您似乎没有设置的索引。只需将索引设置为 ID,在将其索引设置为 ID 之后加入 df,然后将索引重置为 return 原始数据框并添加新列。

>>> df.set_index('ID').join(df1.set_index('ID')).reset_index()
  ID  Value  ID_n
0  a     45     3
1  b      3    35
2  c     10     0     

此外,因为您没有在 df1 上执行就地 set_index,其结构保持不变(即您没有更改其索引)。