假设我们有一个主数据框和一个等效文件。 我们希望将“等效文件”中指示的更改应用到主数据帧的列中。 例如:
主数据框:
ColA | ColB |
---|---|
A | 1 |
B | 2 |
C | 3 |
“等效文件”:
ini | 鳍 |
---|---|
1 | 111 |
3 | 333 |
将“等效文件”中指示的更改应用于主数据帧后,所需的输出应该是:
ColA | ColB |
---|---|
A | 111 |
B | 2 |
C | 333 |
理想情况下,为主题定义一个 python 函数 (def :)...
Series.replace()
:
>>> import pandas as pd
>>> df1 = pd.DataFrame([["a", "1"], ["b", "2"], ["c", "3"]])
0 1
0 a 1
1 b 2
2 c 3
>>> eqv = {"1": "111", "3": "333"}
>>> df1[1] = df1[1].replace(eqv)
>>> df1
0 1
0 a 111
1 b 2
2 c 333
>>>
执行合并,然后过滤以替换 ColB(如果存在有效的 fin):
master = pd.DataFrame(data = {'ColA': ['A', 'B', 'C'], 'ColB': [1, 2, 3]})
equiv = pd.DataFrame(data = {'ini': [1, 3], 'fin': [111, 333]})
result = master.merge(equiv, how = 'left', left_on = 'ColB', right_on = 'ini')
equiv_exists = ~result['fin'].isna()
result.loc[equiv_exists, 'ColB'] = result.loc[equiv_exists, 'fin']
result = result[['ColA', 'ColB']]