首页 > 解决方案 > Python:如何使用具有部分值熊猫的列合并数据

问题描述

有两个带有值的df:

如何仅在df(列=县)中将大写字母与df1部分合并

东风:

name      age   county

mark      22    York_USA_TXS
stuart    23    kysjk_USA
lewis     22    Monty_KYSJK

df1:

pin   county

2225    USA
2225    USA
2226    KYSJK

预期输出:

name      age   county            pin

mark      22    York_USA_TXS      2225
stuart    23    kysjk_USA         2225
lewis     22    Monty_KYSJK       2226

标签: pythonpython-3.xpandasdataframemerge

解决方案


假设县总是遵循相同的模式df1(即{something_COUNTY_...},那么一个可能的解决方案是:

merged = pandas.merge(df1[['name', 'age']], 
         df2, 
         left_on=df1.county.apply(lambda x: x.split("_")[1]), 
         right_on=df2.county).drop_duplicates()
merged[['name', 'age', 'county', 'pin']]

这里的“关键”是df1.county.apply(lambda x: x.split("_")[1]),您实际上将一个函数应用于列county以提取第二个元素,然后将_. 请注意,这适用于您提供给我们的数据,但您可能需要根据需要调整函数(例如,如果您实际想要合并的是USA_TXS而不是USA)。


推荐阅读