我试图根据另一个数据框中的值替换一个数据框中的列中的值。
这是我的df中要修改的列的前三行:
这是另一个称为“区域”的数据框。这具有更新我的df所需的信息。
在此示例中,所需的输出将偶然出现,就像区域df的“县”列一样。但是此映射过程必须在40,000列以上进行,并且不会遵循此模式,因为我df中的值包含区域df的随机值。
到目前为止,我编写的代码是创建一个以县为键的字典:
districts = dict(zip(areas['County'], areas['CC']))
{'Aveiro':'Águeda','Beja':'Aljustrel','Braga':'Vizela'}
我在这里可能是正确的,但我无法弄清楚如何从“ CC”和“ FR”列中获取值。如果我能够拥有一个以县(县)和值(县的CC和FR)为键的字典,那么我将能够轻松地绘制DF。当然,我非常愿意接受其他解决方案!
所需的输出:
答案 0 :(得分:1)
简单合并怎么样?
my_df = my_df.merge(areas, on = 'County', how = 'left')
编辑:
如果第一个数据帧中的County
列对应于FR
数据帧中的areas
列(在这里似乎是这种情况),那么yu应该这样做:
my_df = my_df.merge(areas, left_on = 'County', right_on = 'FR', how = 'left')
EDIT#2:
基于提供的更多信息:
# assuming only one column will match with first dataframe `County` column
import numpy as np
df['in_county'] = df['County'].map(dict(zip(areas.County, areas.County)))
df['in_cc'] = df['County'].map(dict(zip(areas.CC, areas.County)))
df['in_fr'] = df['County'].map(dict(zip(areas.FR, areas.County)))
df.drop('County', axis=1, inplace = True)
output = df.replace(np.nan, '').apply(lambda x: ''.join(x), axis = 1)
output = pd.DataFrame(output, columns = ['County'])