【问题标题】:Map on 2 columns pandas在 2 列 pandas 上映射
【发布时间】:2018-04-09 20:42:03
【问题描述】:

我有一个看起来像这样的数据框:

        Col1           Col2
0        A              PY
1        B              PA
2        C              PB
3        B              PB

还有这个系列:

                            Value
   Col1       Col2     
    A          PY             20
    B          PB             30

我想做一个映射,如果系列有一个索引(仅限前 Col1),它非常简单:

  df['Value'] = df['Col1'].map(s)

如何根据 2 个索引/列进行映射?

谢谢!

【问题讨论】:

  • 您希望通过该映射获得什么结果?
  • 我收到与索引相关的错误

标签: python pandas numpy dictionary dataframe


【解决方案1】:

您可以将它们合并到公共列(具有相同名称的列)上:

In [28]: d1
Out[28]:
  Col1 Col2
0    A   PY
1    B   PA
2    C   PB
3    B   PB

In [29]: d2
Out[29]:
           Value
Col1 Col2
A    PY       20
B    PB       30

In [30]: d1.merge(d2.reset_index())
Out[30]:
  Col1 Col2  Value
0    A   PY     20
1    B   PB     30

或使用左外连接:

In [33]: d1.merge(d2.reset_index(), how='left')
Out[33]:
  Col1 Col2  Value
0    A   PY   20.0
1    B   PA    NaN
2    C   PB    NaN
3    B   PB   30.0

同样的解决方案也适用于 d2 作为系列:

In [31]: s
Out[31]:
Col1  Col2
A     PY      20
B     PB      30
Name: Value, dtype: int64

In [32]: d1.merge(s.reset_index())
Out[32]:
  Col1 Col2  Value
0    A   PY     20
1    B   PB     30

【讨论】:

    【解决方案2】:
    In [5]: d1
    Out[5]:
    
       col1 col2
    0    A   PY 
    1    B   PA
    2    C   PB
    3    D   PB
    
    In [7]: d2
    Out[7]:
    
    col1 col2  val
    A   PY   20
    B   PB   30
    

    您可以使用任一合并:

     In [8]: d1.merge(d2.reset_index())
     Out[8]:
        col1 col2   val
     0    A   PY    20
    

    或者:

    In [9]: result = pd.concat([d1, d2], axis=1)
    
    In [10]: result
    Out[10]:
       col1 col2 col1 col2   val
      0    A   PY    A   PY  20.0
      1    B   PA    B   PB  30.0
      2    C   PB  NaN  NaN   NaN
      3    D   PB  NaN  NaN   NaN
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-31
      • 1970-01-01
      • 2018-09-29
      • 1970-01-01
      • 2021-12-27
      • 2014-03-28
      • 2018-04-06
      • 2022-01-19
      相关资源
      最近更新 更多