Pandas 通过在另一个数据框中查找来填充一个数据框
Pandas fill one dataframe by lookup in other dataframe
我有两个数据框:df1 和 df2
df1 = pd.DataFrame([10,22,30,22,10,60],columns=['Type'])
df2 = pd.DataFrame(["A","B","C","D","E"],columns=['Code'],index=[10,22,30,40,60])
我想在 df1 中创建一个名为 'Code' 的新列,并使用 df2 的匹配索引。
然后,只有Type > 50,我不想查找df2的索引,而是使用Code== B代替。
所需的输出如下所示:
Type Code
0 10 A
1 22 B
2 30 C
3 22 B
4 10 A
5 60 B
知道怎么做吗?
让我们做
df1['Code'] = df1.Type.map(df2.Code).mask(df1['Type'].gt(50),'B') # update by anky_91
df1
Out[10]:
Type Code
0 10 A
1 22 B
2 30 C
3 22 B
4 10 A
5 60 B
您可以使用 merge
:
df1['Code'] = df1.merge(df2, left_on='Type', right_index=True)['Code']
它给出:
Type Code
0 10 A
1 22 B
2 30 C
3 22 B
4 10 A
5 60 E
我有两个数据框:df1 和 df2
df1 = pd.DataFrame([10,22,30,22,10,60],columns=['Type'])
df2 = pd.DataFrame(["A","B","C","D","E"],columns=['Code'],index=[10,22,30,40,60])
我想在 df1 中创建一个名为 'Code' 的新列,并使用 df2 的匹配索引。 然后,只有Type > 50,我不想查找df2的索引,而是使用Code== B代替。
所需的输出如下所示:
Type Code
0 10 A
1 22 B
2 30 C
3 22 B
4 10 A
5 60 B
知道怎么做吗?
让我们做
df1['Code'] = df1.Type.map(df2.Code).mask(df1['Type'].gt(50),'B') # update by anky_91
df1
Out[10]:
Type Code
0 10 A
1 22 B
2 30 C
3 22 B
4 10 A
5 60 B
您可以使用 merge
:
df1['Code'] = df1.merge(df2, left_on='Type', right_index=True)['Code']
它给出:
Type Code
0 10 A
1 22 B
2 30 C
3 22 B
4 10 A
5 60 E