hda*_*tas 5 python dictionary numpy dataframe pandas
我有一个数据框,如下所示:
Col1 Col2
0 A PY
1 B PA
2 C PB
3 B PB
Run Code Online (Sandbox Code Playgroud)
以及这个系列:
Value
Col1 Col2
A PY 20
B PB 30
Run Code Online (Sandbox Code Playgroud)
我想做一个映射,如果该系列有一个索引(仅前 Col1),那么它非常简单:
df['Value'] = df['Col1'].map(s)
Run Code Online (Sandbox Code Playgroud)
如何基于 2 个索引/列进行映射?
谢谢 !
您可以将它们合并到公共列(具有相同名称的列)上:
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
Run Code Online (Sandbox Code Playgroud)
或使用左外连接:
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
Run Code Online (Sandbox Code Playgroud)
相同的解决方案也适用于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
Run Code Online (Sandbox Code Playgroud)