python - 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
解决方案
假设县总是遵循相同的模式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
)。
推荐阅读
- c# - 并行 http 请求花费相同的时间
- ruby - 对等方重置 TCPSocket 连接
- mysql - 如何通过连接表获取值?
- java - SpringBoot MongoDB 继承 CreatedDate 和 LastModifiedDate 变为 null
- javascript - Apollo 客户端在 IE 中崩溃
- python - Python 正则表达式模式拼图
- r - java.io.IOException:没有用于方案的文件系统:R 编程中的 hdfs
- java - Spring 中 Swagger2 的基本身份验证 - XML 配置
- java - 如何获取 Flink 中记录的 Kafka 时间戳?
- python - 在不同的表上使用多个 QSqlQueryModel 时 QSqlQueryModel::clear() 崩溃