Dataframe 使用重复的键值从另一个数据帧分配列值
请帮帮我,我找不到好的解决办法 尝试映射、分配、合并、加入、设置索引。 也许只是我太累了:) df: df1: df_最终版本:Dataframe 使用重复的键值从另一个数据帧分配列值,dataframe,dictionary,join,assign,Dataframe,Dictionary,Join,Assign,请帮帮我,我找不到好的解决办法 尝试映射、分配、合并、加入、设置索引。 也许只是我太累了:) df: df1: df_最终版本: m_num A B C 0 1 0 9 NaN 1 1 1 8 NaN 2 2 2 7 99 3 2 3 6 88 4 3 4 5 NaN 5 3 5 4 NaN 试试看: df2 = df[df['m_num'].isin(df1['m_num'])].re
m_num A B C
0 1 0 9 NaN
1 1 1 8 NaN
2 2 2 7 99
3 2 3 6 88
4 3 4 5 NaN
5 3 5 4 NaN
试试看:
df2 = df[df['m_num'].isin(df1['m_num'])].reset_index(drop=True)
df2 = pd.merge(df2,df1,on=[df1.index,'m_num']).drop('key_0',axis=1)
df2 = pd.merge(df,df2,on=['m_num','A','B'],how='left')
print(df2)
m_num A B C
0 1 0 9 NaN
1 1 1 8 NaN
2 2 2 7 99.0
3 2 3 6 88.0
4 3 4 5 NaN
5 3 5 4 NaN
打印:
df2 = df[df['m_num'].isin(df1['m_num'])].reset_index(drop=True)
df2 = pd.merge(df2,df1,on=[df1.index,'m_num']).drop('key_0',axis=1)
df2 = pd.merge(df,df2,on=['m_num','A','B'],how='left')
print(df2)
m_num A B C
0 1 0 9 NaN
1 1 1 8 NaN
2 2 2 7 99.0
3 2 3 6 88.0
4 3 4 5 NaN
5 3 5 4 NaN
说明:
df2 = df[df['m_num'].isin(df1['m_num'])].reset_index(drop=True)
df2 = pd.merge(df2,df1,on=[df1.index,'m_num']).drop('key_0',axis=1)
df2 = pd.merge(df,df2,on=['m_num','A','B'],how='left')
print(df2)
m_num A B C
0 1 0 9 NaN
1 1 1 8 NaN
2 2 2 7 99.0
3 2 3 6 88.0
4 3 4 5 NaN
5 3 5 4 NaN
也许有更好的解决方案,但这是我的思考过程。这个问题有点棘手,因为'm_num'是唯一的公共键,并且它有重复的值
首先,我在这里创建了一个dataframe
匹配df
和df1
,这样我就可以使用索引作为后续合并的另一个键
df2 = df[df['m_num'].isin(df1['m_num'])].reset_index(drop=True)
这张照片是:
m_num A B
0 2 2 7
1 2 3 6
m_num A B C
0 2 2 7 99
1 2 3 6 88
正如您在上面所看到的,现在除了m_num
键之外,我们还有索引0和1,我们可以使用它来匹配df1
df2 = pd.merge(df2,df1,on=[df1.index,'m_num']).drop('key_0',axis=1)
这张照片是:
m_num A B
0 2 2 7
1 2 3 6
m_num A B C
0 2 2 7 99
1 2 3 6 88
然后将上述结果dataframe
绑定到原始df
并进行左连接以获得输出
df2 = pd.merge(df,df2,on=['m_num','A','B'],how='left')
您认为我们可以将标题编辑为“使用重复的键值从另一个数据框分配列值”之类的内容吗?