python - Pandas 数据帧 : How to merge dataframe with multiple index and single index

标签 python pandas dataframe join merge

我在将 2 个数据帧与数据帧 1 中的多个索引和数据帧 2 中的单个索引合并时遇到问题。我有 数据框1

ID    description
1          A
1          B
1          C
2          D
2          E

数据框2

ID     price
1       100
2       50 

预期输出

ID    description    price
1         A           100
1         B           NaN
1         C           NaN
2         D           50
2         E           NaN

谢谢你,对不起我的英语。

最佳答案

您可以使用带有 bool 值的 .loc 来删除重复项,并使用 mapdf2 中查找值

此方法假定您只有一个目标列。

df1.loc[df1.drop_duplicates(subset=['ID'],keep='first').index, 
                            'price'] =  df1['ID'].map(df2.set_index('ID')['price'])


   ID description  price
0   1           A  100.0
1   1           B    NaN
2   1           C    NaN
3   2           D   50.0
4   2           E    NaN

.groupby('id').cumcount().merge

另一种更动态的方法是在您的 ID 上创建一个序列,然后在两个键上加入。

df1['sequence'] = df1.groupby('ID').cumcount()
df2['sequence'] = df2.groupby('ID').cumcount()

df3 = pd.merge(df1,df2,on=['ID','sequence'],how='left').drop('sequence',1)

   ID description  price
0   1           A  100.0
1   1           B    NaN
2   1           C    NaN
3   2           D   50.0
4   2           E    NaN

print(df1)

   ID description  sequence
0   1           A         0
1   1           B         1
2   1           C         2
3   2           D         0
4   2           E         1

print(df2)

   ID  price  sequence
0   1    100         0
1   2     50         0

关于python - Pandas 数据帧 : How to merge dataframe with multiple index and single index,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66169077/

相关文章:

python - 按间隔合并两个 Pandas 数据帧

python-3.x - 将多分类列转换为 Pandas 中的两个类别

python - 创建一个列,该列为另一行的更改增加值

python - pandas调整Excel工作表大小以匹配较大的工作表以进行比较

python - 逐字遍历字符串

python - Python/Pandas 中的 R 向量语法

python - 条件 elif 语句未产生正确的结果

python - cumcout groupby --- 如何按组列出

python - 如何计算整列最接近的纬度经度?

python for循环作为函数中的elif语句