当一个在熊猫中具有multiIndex时合并两个数据框

路透社

我有MultiIndex数据帧(表1),我想合并来自不是multiIndex的另一个数据帧(表2)的特定列。

表1的示例:

>>>            name          2020-10-21                   2020-10-22   ...
Column                     9    10    11   12          9    10    11    12   

0             A5          2.1   2.2   2.4  2.8        5.4   3.4   1.1   7.3
1             B9          7.2   1.2   14.5  7.5       3.4   5.2   6.4   8.1
2             C3          1.1   6.5   8.4   9.1       1.1   4.3   6.5   8.7
...

表2的示例:

>>>name   indc   control   code       
0    A5   0.32    yes       1
1    C3   0.11    no        2
2    B18  0.23    yes       2
3    B9   0.45    no        3

我想基于表2中的键“名称”(和表1中的“索引”)合并“代码”列,以获取te名称旁边的代码:

>>>          index              2020-10-21                   2020-10-22   ...
Column                code     9    10    11   12          9    10    11    12   

0             A5        1     2.1   2.2   2.4  2.8        5.4   3.4   1.1   7.3
1             B9        3    7.2   1.2   14.5  7.5       3.4   5.2   6.4   8.1
2             C3        2     1.1   6.5   8.4   9.1       1.1   4.3   6.5   8.7
...

我知道当索引不是multindex级别时如何合并,然后这样做:

df = table1.merge(table2[['code','name']], how = 'left',
                left_on = 'index', right_on = 'name')

但是现在我得到了错误:

UserWarning:在不同级别之间合并可能会产生意外的结果(左侧2级,右侧1级)警告。warn(msg,UserWarning)

接着:

ValueError:“索引”不在列表中

当我打印列时,我可以看到你就像元组,但是我不知道为什么它说索引不在列表中,就像我打印表1的列时得到的那样:

Index([   ('index', ''),  (2020-10-22, 9)...

所以我有点困惑。

我的最终目标:基于“名称”和“索引”列合并代码列

耶斯列尔

为了满足MultiIndex两个中DataFrame正确工作需求

df2 = table2[['code','name']].rename(columns={'name':'index'})
df2.columns = pd.MultiIndex.from_product([df2.columns, ['']])


df = table1.merge(df2, how = 'left', on = [('index', '')])

#if necessary reorder columns names
cols = df.columns[:1].tolist() + df.columns[-1:].tolist() + df.columns[1:-1].tolist()

df = df[cols]
print (df)
  index code 2020-10-21                 2020-10-22               
                      9   10    11   12          9   10   11   12
0    A5    1        2.1  2.2   2.4  2.8        5.4  3.4  1.1  7.3
1    B9    3        7.2  1.2  14.5  7.5        3.4  5.2  6.4  8.1
2    C3    2        1.1  6.5   8.4  9.1        1.1  4.3  6.5  8.7

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

熊猫在合并两个数据框时创建一个标志

合并具有一个公共列名的两个数据框

合并两个具有共同值的熊猫数据框,它们在一个数据框中显示为列,而在另一行中显示为行

如何使用两个熊猫数据框创建一个新数据框,其中一个数据框具有特定的行?

熊猫:将两个数据框列合并到一个已排序的列中

熊猫:如何通过保留第一个数据框的信息来合并两个数据框?

在熊猫中合并具有相同索引的两个数据框

将具有两个日期列的一个数据框与具有两个日期列的另一个数据框合并

熊猫基于一个表中的一列合并两个数据帧,该数据框位于另一表中的两列之间

将R中的两个列表合并到一个数据框中

熊猫:如何在一个列上合并具有相同列名的多个数据框?

R:合并两个数据框时选择一个单元格

在Python中合并具有非唯一值的列中的两个数据框

比较熊猫中两个数据框的所有值都大于另一个

如何合并一列中具有多个元素的两个数据框

当一个数据框为空时,迭代两个熊猫数据框错误

熊猫-在两个数据框中找到值的交集,返回一个具有相同大小且交集数相同的数据框

大熊猫合并两个数据框,其中一个包含另一列的值

熊猫:合并(或内部联接)两个数据框,但仅保留其中一个列

熊猫合并具有不同日期和列的两个数据框

熊猫合并具有不同列的两个数据框

当一个是多级索引而另一个不是多级索引时,如何求和具有不同形状的两个数据框的值

合并/合并熊猫中具有不同频率时间序列索引的两个数据帧?

与熊猫合并两个数据框

合并两个数据框熊猫

合并两个熊猫数据框两个创建具有特定操作的新数据框

外部将熊猫中的两个数据框合并

在熊猫中合并两个数据框

如何在熊猫中合并两个数据框?