将“等效文件”应用于数据框

问题描述 投票:0回答:2

假设我们有一个主数据框和一个等效文件。 我们希望将“等效文件”中指示的更改应用到主数据帧的列中。 例如:

主数据框:

ColA ColB
A 1
B 2
C 3

“等效文件”:

ini
1 111
3 333

将“等效文件”中指示的更改应用于主数据帧后,所需的输出应该是:

ColA ColB
A 111
B 2
C 333

理想情况下,为主题定义一个 python 函数 (def :)...

python file equivalence
2个回答
0
投票

将“等效文件”加载到字典中并使用

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
>>>

0
投票

执行合并,然后过滤以替换 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']]
© www.soinside.com 2019 - 2024. All rights reserved.