如何在 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
,其结构保持不变(即您没有更改其索引)。
您好,我有以下数据框:
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
,其结构保持不变(即您没有更改其索引)。