繁体   English   中英

如何在Python的另一个数据框中检查熊猫数据框的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

谢谢

使用熊猫合并:

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 ,然后重置索引以返回添加了新列的原始数据框。

>>> 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 ,所以它的结构保持不变(即,您不更改其索引)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM