[英]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.